微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > FPGA和CPLD > 明德扬至简设计法--分享一份实现矩阵键盘的verilog代码 可直接使用

明德扬至简设计法--分享一份实现矩阵键盘的verilog代码 可直接使用

时间:02-21 来源:互联网 点击:

  1. `define  SCAN

  2. module  key_scan(
  3.                  clk    ,
  4.                  rst_n  ,
  5.                  key_col, //键盘列输入
  6.                  key_row, //键盘行输出
  7.                  key_num, //指示哪一个按键按下,用0~15指示
  8.                  key_vld  //按下有效指示信号,其为1表示按下一次。
  9.                );


  10.     parameter      KEY_W    =   4 ;
  11.     parameter      COL      =   0 ;
  12.     parameter      ROW      =   1 ;
  13.     parameter      DLY      =   2 ;
  14.     parameter      FIN      =   3 ;
  15.     parameter      COL_CNT  =   16;
  16.     parameter      TIME_20MS=   1000000;

  17.     //输入信号定义
  18.     input               clk    ;
  19.     input               rst_n  ;
  20.     input  [3:0]        key_col;

  21.     //输出信号定义
  22.     output              key_vld;
  23.     output[3:0]         key_num;
  24.     output[KEY_W-1:0]   key_row;

  25.     //输出信号reg定义
  26.     reg   [3:0]         key_num;
  27.     reg   [KEY_W-1:0]   key_row;
  28.     reg                 key_vld;


  29.     reg   [ 3:0]        key_col_ff0   ;
  30.     reg   [ 3:0]        key_col_ff1   ;
  31.     reg   [ 1:0]        key_col_get   ;
  32.     reg                 shake_flag    ;
  33.     reg                 shake_flag_ff0;
  34.     reg   [ 3:0]        state_c       ;
  35.     reg   [19:0]        shake_cnt     ;
  36.     reg   [ 3:0]        state_n       ;
  37.     reg   [ 1:0]        row_index     ;
  38.     reg   [15:0]        row_cnt       ;
  39.         reg   [ 2:0]        x             ;


  40. always  @(posedge clk or negedge rst_n)begin
  41.     if(rst_n==1'b0)begin
  42.         key_col_ff0 <= 4'b1111;
  43.  

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top