FPGA矩阵键盘驱动设计及Testbench验证
FPGA矩阵键盘驱动设计
设计思路
采用20ms的延时电路产生使能时钟去扫描,可以直接省略掉按键的消抖延时;虽然每个状态都要进行一次延时消抖,但RTL设计上却更加简单了。
工作过程
- ROW[3:0]作为处理器的输入,COL[3:0]作为处理器的输出;
- 闲置状态下,COL[3:0]输出低电平;ROW[3:0]由于上拉电阻的原因输出高电平;
- 当某一按键被按下时,相应的行被拉低,ROW[3:0]中的某一个引脚检测到低电平,此时确定了按键所在的行;
- 为了检测哪一列被按下,人为将COL[3:0]逐个设置为低电平,其他3个I/O为高电平,扫描顺序为由高位到低位,即从左到右,进行扫描。如果检测到此时的ROW[3:0]的值与先前的一样,则确定了闭合按键的所在列。最多扫描4次,便能确定按键位置。
矩阵键盘的Verilog HDL实现
* All rights Reserved, Designed By https://blog.csdn.net/zhaogoudan
* @description :Matrix key scan design
* @author :ZhaoGoudan
* @date :21.01.14
* @version :V1.0.0
* @copy