zoukankan      html  css  js  c++  java
  • 独立按键消抖FPGA模块

    View Code
    1 module keyxiaodou (
    2 input clk,//the freq or clk is 50M
    3 input rst,//use key3 for rst button
    4 input key1,key2,//use key1 to light led,use key2 to turn off led
    5 output led);
    6 //--------------------------------------------------
    7 reg [1:0] key_r;//the first time check the key
    8 always @ (posedge clk or negedge rst)
    9 if (!rst) key_r <= 2'b11;
    10 else key_r <= {key2,key1};
    11
    12 reg [1:0] key_rb;
    13 always @ (posedge clk or negedge rst)
    14 if (!rst) key_rb <= 2'b11;
    15 else key_rb <= key_r;
    16
    17 wire [1:0] key_an = key_rb & (~key_r);//if the key[?] is pressed,key_an[?] become 1'b1
    18 //--------------------------------------------------
    19 reg [19:0] cnt;//divice the freq 1/50m*2^20=20ms
    20 always @ (posedge clk or negedge rst)
    21 if (!rst) cnt <= 20'd0;
    22 else if (key_an) cnt <= 20'd0;
    23 else cnt <= cnt+1'b1;
    24 //--------------------------------------------------
    25 reg [1:0] keyn_r;//the second time check the key
    26 always @ (posedge clk or negedge rst)
    27 if (!rst) keyn_r <= 2'b11;
    28 else if(cnt ==20'hfffff) keyn_r <= {key2,key1};//relay 20ms for debounce
    29
    30 reg [1:0] keyn_rb;
    31 always @ (posedge clk or negedge rst)
    32 if (!rst) keyn_rb <= 2'b11;
    33 else keyn_rb <= keyn_r;
    34
    35 wire [1:0] key_p = keyn_rb & (~keyn_r);
    36 //--------------------------------------------------
    37 reg led_r;
    38 always @ (posedge clk or negedge rst)
    39 if (!rst) led_r <= 1'b0;
    40 else if (key_p[0]) led_r <= 1'b1;
    41 else if (key_p[1]) led_r <= 1'b0;
    42
    43 assign led=~led_r;
    44 endmodule
  • 相关阅读:
    单例和静态类
    Aggregate
    lc.exe已退出代码为1
    MVC 使用entity framework 访问数据库 发布IIS
    MVC 发布
    Nhiberate (三)测试
    Nhiberate (二) 搭项目
    初次安装git配置
    十大Intellij IDEA快捷键(转)
    Git强制覆盖master分支
  • 原文地址:https://www.cnblogs.com/yuesheng/p/2102112.html
Copyright © 2011-2022 走看看