差别

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

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
矩阵键盘键入系统设计 [2018/10/22 11:20]
anran [实验现象]
矩阵键盘键入系统设计 [2020/01/18 21:55] (当前版本)
gongyu
行 1: 行 1:
-=====矩阵键盘键入系统设计===== +### 矩阵键盘键入系统设计 
------ + 
-====实验任务====+--- 
 +#### 实验任务
   * 任务:基于 STEP-MAX10M08核心板 和 STEP BaseBoard V3.0底板 设计矩阵键盘键入系统并观察调试结果   * 任务:基于 STEP-MAX10M08核心板 和 STEP BaseBoard V3.0底板 设计矩阵键盘键入系统并观察调试结果
   * 要求:按动矩阵键盘按键,通过核心板上的数码管显示按键的键值。   * 要求:按动矩阵键盘按键,通过核心板上的数码管显示按键的键值。
   * 解析:通过FPGA编程驱动矩阵键盘电路,获取矩阵键盘键入的信息,然后通过编码将键盘输出的信息译码成对应的键值信息,最后通过驱动核心板独立数码管,将键盘按键的键值显示在数码管上。   * 解析:通过FPGA编程驱动矩阵键盘电路,获取矩阵键盘键入的信息,然后通过编码将键盘输出的信息译码成对应的键值信息,最后通过驱动核心板独立数码管,将键盘按键的键值显示在数码管上。
  
 +####​实验目的
  
-====实验目的====+---
 在基础数字电路实验部分我们已经掌握了FPGA驱动独立显示数码管的原理及方法,掌握了有限状态机的设计实现思想,本实验主要学习矩阵键盘的原理及驱动设计。 在基础数字电路实验部分我们已经掌握了FPGA驱动独立显示数码管的原理及方法,掌握了有限状态机的设计实现思想,本实验主要学习矩阵键盘的原理及驱动设计。
   * 熟悉独立显示数码管驱动模块的应用   * 熟悉独立显示数码管驱动模块的应用
行 15: 行 17:
  
  
-====设计框图====+####设计框图 
 + 
 +---
 根据前面的实验解析我们可以得知,该设计可以拆分成三个功能模块实现, 根据前面的实验解析我们可以得知,该设计可以拆分成三个功能模块实现,
   * Array_KeyBoard:通过驱动矩阵键盘工作获取键盘的操作信息数据。   * Array_KeyBoard:通过驱动矩阵键盘工作获取键盘的操作信息数据。
行 25: 行 29:
 {{:​2-top-down层次设计.png?​500|top-down层次设计}}{{:​2-模块结构设计.png?​500|模块结构设计}} {{:​2-top-down层次设计.png?​500|top-down层次设计}}{{:​2-模块结构设计.png?​500|模块结构设计}}
  
-====实验原理==== +####实验原理 
-===键盘类型===+ 
 +--- 
 + 
 +#####键盘类型
  
 嵌入式设计中常见的键盘有两种类型,独立键盘与矩阵键盘, 嵌入式设计中常见的键盘有两种类型,独立键盘与矩阵键盘,
行 37: 行 44:
 在键盘中按键数量较多时,为了减少I/​O口的占用,通常将按键排列成矩阵形式,使用行线和列线分别连接到按键开关的两端,这样我们就可以通过4根行线和4根列线(共8个I/​O口)连接16个按键,而且按键数量越多优势越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是更加合适的。 在键盘中按键数量较多时,为了减少I/​O口的占用,通常将按键排列成矩阵形式,使用行线和列线分别连接到按键开关的两端,这样我们就可以通过4根行线和4根列线(共8个I/​O口)连接16个按键,而且按键数量越多优势越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是更加合适的。
  
-===矩阵键盘连接===+#####矩阵键盘连接 
 + 
 +---
  
 这里我们以STEP BaseBoard V3.0底板上的4x4矩阵键盘为例,其电路图如下: 这里我们以STEP BaseBoard V3.0底板上的4x4矩阵键盘为例,其电路图如下:
行 51: 行 60:
 按照扫描的方式,一共分为4个时刻,分别对应4根行线中的一根拉低,4个时刻依次循环,这样就完成了矩阵按键的全部扫描检测,我们在程序中以这4个时刻对应状态机的4个状态。 按照扫描的方式,一共分为4个时刻,分别对应4根行线中的一根拉低,4个时刻依次循环,这样就完成了矩阵按键的全部扫描检测,我们在程序中以这4个时刻对应状态机的4个状态。
  
-===矩阵键盘驱动设计===+#####矩阵键盘驱动设计 
 + 
 +---
  
 通过上节的描述,大家对于矩阵键盘工作的原理应该都没有问题了,那么我们怎么编程实现矩阵键盘驱动设计呢?我们将矩阵键盘的扫描周期分为4个时刻,对应4个状态,使得状态机在4个状态上循环跳转,最终通过扫描的方式获取矩阵键盘的操作状态。 通过上节的描述,大家对于矩阵键盘工作的原理应该都没有问题了,那么我们怎么编程实现矩阵键盘驱动设计呢?我们将矩阵键盘的扫描周期分为4个时刻,对应4个状态,使得状态机在4个状态上循环跳转,最终通过扫描的方式获取矩阵键盘的操作状态。
行 164: 行 175:
 {{:​2-状态机状态转移图.png?​800|状态机状态转移图}} {{:​2-状态机状态转移图.png?​800|状态机状态转移图}}
  
-===系统总体实现===+##### 系统总体实现
  
 在基础数字电路实验部分我们已经掌握了FPGA驱动独立显示数码管的原理及方法, 模块通过一个4位的输入传递要显示的数值,通过9位的输出控制数码管显示该数值,这里我们不再重复。 在基础数字电路实验部分我们已经掌握了FPGA驱动独立显示数码管的原理及方法, 模块通过一个4位的输入传递要显示的数值,通过9位的输出控制数码管显示该数值,这里我们不再重复。
行 202: 行 213:
  
 {{:​2-rtl设计框图.png?​800|rtl设计框图}} {{:​2-rtl设计框图.png?​800|rtl设计框图}}
-====实验步骤====+ 
 +####实验步骤
   - 双击打开Quartus Prime工具软件;   - 双击打开Quartus Prime工具软件;
   - 新建工程:File → New Project Wizard(工程命名,工程目录选择,设备型号选择,EDA工具选择);   - 新建工程:File → New Project Wizard(工程命名,工程目录选择,设备型号选择,EDA工具选择);
行 213: 行 225:
  
  
-====实验现象====+#### 实验现象
  
 按动矩阵键盘上的按键,核心板独立显示数码管会更新显示对应键值。例如上电默认显示00,按动K8按键,数码管显示08,再按动K16按键,数码管显示16。 按动矩阵键盘上的按键,核心板独立显示数码管会更新显示对应键值。例如上电默认显示00,按动K8按键,数码管显示08,再按动K16按键,数码管显示16。