差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 后一修订版 两侧同时换到之后的修订记录 | ||
矩阵按键模块 [2017/05/25 12:30] anran [硬件说明] |
矩阵按键模块 [2020/01/18 21:28] gongyu |
||
---|---|---|---|
行 1: | 行 1: | ||
- | ======基于STEP FPGA的矩阵按键驱动====== | + | ### 基于STEP FPGA的矩阵按键驱动 |
本节将和大家一起使用FPGA驱动底板上的4x4矩阵键盘。 | 本节将和大家一起使用FPGA驱动底板上的4x4矩阵键盘。 | ||
- | + | --- | |
- | ====硬件说明==== | + | #### 硬件说明 |
- | ------- | + | |
在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,使用行线和列线分别连接到按键开关的两端,这样我们就可以通过4根行线和4根列线(共8个I/O口)连接16个按键,而且按键数量越多优势越明显。 | 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,使用行线和列线分别连接到按键开关的两端,这样我们就可以通过4根行线和4根列线(共8个I/O口)连接16个按键,而且按键数量越多优势越明显。 | ||
行 20: | 行 19: | ||
通过上面的描述:在这一时刻只有K1、K2、K3、K4按键被按下,才会导致4根列线输出COL1=0、COL2=0、COL3=0、COL4=0,否则COL1=1、COL2=1、COL3=1、COL4=1,反之当FPGA检测到列线(COL1、COL2、COL3、COL4)中有低电平信号时,对应的K1、K2、K3、K4按键应该是被按下了。 | 通过上面的描述:在这一时刻只有K1、K2、K3、K4按键被按下,才会导致4根列线输出COL1=0、COL2=0、COL3=0、COL4=0,否则COL1=1、COL2=1、COL3=1、COL4=1,反之当FPGA检测到列线(COL1、COL2、COL3、COL4)中有低电平信号时,对应的K1、K2、K3、K4按键应该是被按下了。 | ||
- | 按照扫描的方式,一共分为4个时刻,分别对应4根行线中的一根拉低,4个时刻一次循环,这样就完成了矩阵按键的全部扫描检测,我们在程序中以这4个时刻对应状态机的4个状态。 | + | 按照扫描的方式,一共分为4个时刻,分别对应4根行线中的一根拉低,4个时刻依次循环,这样就完成了矩阵按键的全部扫描检测,我们在程序中以这4个时刻对应状态机的4个状态。 |
至于循环的周期,根据我们基础教程里可知,按键抖动的不稳定时间在10ms以内,所以对同一个按键采样的周期大于10ms,这同样取20ms时间。20ms时间对应4个状态,每5分钟进行一次状态转换。 | 至于循环的周期,根据我们基础教程里可知,按键抖动的不稳定时间在10ms以内,所以对同一个按键采样的周期大于10ms,这同样取20ms时间。20ms时间对应4个状态,每5分钟进行一次状态转换。 | ||
\\ | \\ | ||
行 27: | 行 26: | ||
{{ :矩阵按键扫描法原理.jpg |}} | {{ :矩阵按键扫描法原理.jpg |}} | ||
\\ | \\ | ||
- | ====Verilog代码==== | ||
- | ------ | ||
- | <code verilog> | ||
+ | --- | ||
+ | #### Verilog代码 | ||
+ | |||
+ | <code verilog> | ||
// -------------------------------------------------------------------- | // -------------------------------------------------------------------- | ||
// >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<< | // >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<< | ||
行 125: | 行 125: | ||
\\ | \\ | ||
- | \\ | + | |
- | ====引脚分配==== | + | --- |
- | ------- | + | #### 小结 |
- | 综合(synthesize)完成之后一定要配置FPGA的引脚到相应的外设,这样下载FPGA程序后才能达到我们想要的效果。 | + | 本节主要为大家讲解了矩阵按键的工作原理及软件设计,需要大家掌握的同时自己创建工程,通过整个设计流程,生成FPGA配置文件加载测试。 |
\\ | \\ | ||
- | {{led1.png?300|}} {{button1.png?300|}} | + | 如果你对Diamond软件的使用不了解,请参考这里:[[lattice_diamond的使用|Diamond的使用]]。 |
+ | |||
+ | --- | ||
+ | #### 相关资料 | ||
+ | \\ | ||
+ | 使用[[STEP-MXO2第二代]]的矩阵按键程序: 后续会有下载连接 待更新 | ||
+ | \\ | ||
+ | 使用[[STEP-MAX10]]的矩阵按键程序: 后续会有下载连接 待更新 | ||
\\ | \\ | ||
- | |||
- | ====小结==== | ||
- | ------ | ||
- | 下载完程序后就可以实现按键开关控制LED灯的亮灭。了解小脚丫STEP-MXO2 V2上的外设LED、按键和开关的使用。如果你对Diamond软件的使用不了解,请参考这里:[[lattice_diamond的使用|Diamond的使用]]。 | ||
- | |||
- | |||
- |