差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
矩阵按键模块 [2017/05/26 11:19]
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配置文件加测试
 \\ \\
-我们使用PCLK充当程序中clk_in,使用按键KEY1充当rst_n_in,col和row引脚按照高低顺序分频,key_out可以分配给LED灯、三色灯、PMOD等FPGA控制输出的引脚上,通过观察或示波器测量检验设计+如果你对Diamond软件的使用不了解,请参考这里:[[lattice_diamond的使用|Diamond使用]]。 
 + 
 +--- 
 +#### 相关资料
 \\ \\
-{{ :step_baseboard_v2.2_引脚分配.jpg?​1000 |}}+使用[[STEP-MXO2第二代]]的矩阵按键程序 ​后续会有下载连接 ​ 待更新
 \\ \\
-====小结==== +使用[[STEP-MAX10]]的矩阵按键程序:  后续会有下连接 ​ 待更新
------- +
-本节主要为大家讲解了矩阵按键的工作原理及软件设计,需要大家掌握的同时自己创建工程,通过整个设计流,生成FPGA配置文件加测试。+
 \\ \\
-如果你对Diamond软件的使用不了解,请参考这里:[[lattice_diamond的使用|Diamond的使用]]。 
- 
- 
-