32
LOGO LOGO 至芯科技

至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO

LOGO

至芯科技

Page 2: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 2

今天讲课的题目是:4x4键盘矩阵。

本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键盘矩阵驱动逻辑电路的建模与仿真,我们还要结合之前讲过的数码管一起编写一个完整的演示逻辑,并下板查看实际效果。

4x4键盘矩阵

Page 3: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 3

至芯科技ZX_1开发板的矩阵键盘的电路图如下。

4x4键盘矩阵

Page 4: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 4

在使用按键的时候,如果按键不多的话,我们可以直接按键与FPGA相连接,但是如果按键比较多的时候,如何还继续使用直接按键与FPGA

相连接的话,所会大量增加FPGA端口的消耗,为了减少FPGA端口的消耗,我们可以把按键设计成矩阵的形式。

由上图可以知道,矩阵键盘的行row(行)与col(列)的交点,都是通过一个按键来相连接。

传统的一个按键一个端口的方法,若要实现16个按键,则需要16个端口,而现在这个矩阵键盘的设计,16个按键,仅仅需要8个端口,如果使用16个端口来做矩阵键盘的话,可以识别64个按键,端口的利用率远远比传统的设计好的多,所以如果需要的按键少的话,可以选择传统的按键设计,如果需要的按键比较多的话,可以采用这种矩阵键盘的设计。而我们现在就以扫描法为例来介绍矩阵键盘的工作原理。

4x4键盘矩阵

Page 5: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 5

首先col(列)是FPGA给矩阵键盘输出的扫描信号,而row(行)是矩阵键盘反馈给FPGA的输入信号,用于检测哪一个按键被按下来,如下图所示:

4x4键盘矩阵

Page 6: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 6

详细如上图所示,FPGA给出扫描信号COL[3:0],COL = 4’b0111,等下一个时钟周期COL = 4’b1011,再等下一个时钟周期COL =4’b1101,再等下一个时钟周期COL = 4’b1110,再等下一个时钟周期COL = 4’b0111,COL就是这样不断循环,给矩阵键盘一个低电平有效的扫描信号,当FPGA给矩阵键盘COL扫描信号的同时,FPGA也要在检测矩阵键盘给FPGA的的反馈信号ROW,举个例子,假若矩阵键盘中的9号按键被按下了:

当COL = 4’b0111,ROW = 4’b1111;

当COL = 4’b1011,ROW = 4’b1111;

当COL = 4’b1101,ROW = 4’b1011;

当COL = 4’b1110,ROW = 4’b1111;

4x4键盘矩阵

Page 7: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 7

有人问,为什么当COL = 4’b1101的时候,ROW = 4’b1011呢?

我们现在就以矩阵键盘的电路来分析一下这个原因,如下图所示。

当9号按键被按下的时候,9号按键的电路就会被导通,扫描电路COL开始扫描,当扫描到COL[1]的时候,由于9号按键的电路被导通了,COL[1]的电压等于ROW[2]的电压,所以会出现当COL = 4’b1101的时候ROW = 4’b1011;然后我们就可以利用这一种现象,来设计一个识别按键的电路。

4x4键盘矩阵

Page 8: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 8

DE2开发板上通过GPIO口外接8PIN的4x4薄膜矩阵键盘。

从电路原理图来看,与至芯科技ZX_1开发板相比,DE2开发板多了限流电阻和二极管限压保护,但是没有对row0~row3进行上拉,我们可以在FPGA管脚配置的时候对row0~row3信号进行弱上拉。

4x4键盘矩阵

Page 9: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 9

4x4键盘矩阵

Page 10: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 10

4x4薄膜矩阵键盘连接实物图。

左图中插针对应信号row3、row2、row1、row0、col3、col2、col1、col0。

按照右图中连接方法,信号对应关系如下:

col0 IO_B11 (47R + Diodes) GPIO_1[11] PIN_P24

col1 IO_B13 (47R + Diodes) GPIO_1[13] PIN_R24

col2 IO_B15 (47R + Diodes) GPIO_1[15] PIN_T22

col3 IO_B17 (47R + Diodes) GPIO_1[17] PIN_T24

row0 IO_B19 (47R + Diodes) GPIO_1[19] PIN_T18

row1 IO_B21 (47R + Diodes) GPIO_1[21] PIN_T20

row2 IO_B23 (47R + Diodes) GPIO_1[23] PIN_U25

row3 IO_B25 (47R + Diodes) GPIO_1[25] PIN_U24

4x4键盘矩阵

Page 11: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 11

4x4键盘矩阵

Page 12: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 12

4x4键盘矩阵

Page 13: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 13

矩阵键盘的扫描原理既然已经清楚,我们下面来进行系统设计。

命名逻辑为key_pad。

架构图如下所示。

4x4键盘矩阵

Page 14: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 14

加上数码管数据预处理模块pre_seg7和数码管模块seg7后,系统总体架构图如下。

其中,数码管数据预处理模块pre_seg7将键盘矩阵模块key_pad输出的1

位按键数补充到显示的8位数的低位上,高位左移。

比如,数码管原显示01234567,如果键盘按下8,则数码管显示变为12345678。

4x4键盘矩阵

Page 15: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 15

4x4键盘矩阵

Page 16: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 16

先从键盘矩阵模块key_pad.v做起吧!

新建工程文件夹key_pad。新建key_pad.v文件。

(详见文字说明)

4x4键盘矩阵

Page 17: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 17

进行分析综合检查。

编写Testbench。新建key_pad_tb.v文件。

(详见文字说明)

4x4键盘矩阵

Page 18: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 18

进行分析综合检查。

进行仿真设置。

查看仿真结果。

每次按键按下之后,数据位data和标志位flag都有对应数字的输出。

仿真功能正确。

4x4键盘矩阵

Page 19: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 19

向工程文件夹添加第九讲的数码管模块seg7.v。 (详见文字说明)

4x4键盘矩阵

Page 20: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 20

新建数码管数据预处理模块pre_seg7.v。 (详见文字说明)

4x4键盘矩阵

Page 21: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 21

新建top.v顶层模块,将以上三个模块都加入到top.v顶层模块中进行例化。

其中数码管模块seg7.v需要例化8次,分别对应8个数码管。

将top.v模块设置为顶层模块。

编写top.v模块如下。

4x4键盘矩阵

Page 22: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 22

运行.tcl文件设置好FPGA管脚

在Tools菜单下点击Tcl

Scripts…选项,运行编写好的DE2_key_pad.

tcl文件内容,对FPGA芯片管脚进行设置。在弹出对话框中选中Project

下的DE2_key_pad.

tcl,点击RUN

按钮。

4x4键盘矩阵

Page 23: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 23

运行.tcl文件设置好FPGA管脚

在Tools菜单下点击Tcl

Scripts…选项,运行编写好的DE2_key_pad.

tcl文件内容,对FPGA芯片管脚进行设置。在弹出对话框中选中Project

下的DE2_key_pad.

tcl,点击RUN

按钮。

4x4键盘矩阵

Page 24: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 24

DE2_key_pad.t

cl文件相关内容如下所示。注意其中有设置弱上拉的语句。

(详见文字说明)

FPGA芯片配置结果如图所示。

4x4键盘矩阵

Page 25: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 25

DE2_key_pa

d.tcl文件相关内容如下所示。注意其中有设置弱上拉的语句。

(详见文字说明)

FPGA芯片配置结果如图所示。

4x4键盘矩阵

Page 26: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 26

为了能观察到弱上拉项,需要进行如下操作。

•在弹出的Pin Planner

界面的All Pins区域里点击鼠标右键,找到 Customize

Columns。

4x4键盘矩阵

Page 27: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 27

•在弹出的Customize Columns对话框的左列表框选择Weak Pull-Up Resistor,再点击,把Weak Pull-Up Resistor添加到右列表框,这样在Pin Planner的All Pins区域里就有一列Weak Pull-Up Resistor的设置项。

4x4键盘矩阵

Page 28: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 28

•再把需要上拉电阻的Pin在其对应的Weak Pull-

Up Resistor列的位置双极鼠标左键,就会弹出一个Off/On的选项,选上On就可以了。

•重新综合布局布线生成新的下载文件即可生效。此上拉电阻为弱上拉,Altera 没有下拉电阻选项。

4x4键盘矩阵

Page 29: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 29

.sof文件下载到FPGA

全编译FPGA工程,生成.sof文件,连接DE2开发板并上电。

打开Programmer通过Jtag口,将.sof文件下载到FPGA进行在线仿真。

.sof文件下载界面如下图所示。

4x4键盘矩阵

Page 30: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 30

开发板运行效果

开发板运行效果如下图所示。

经检查,开发板运行效果与设计相符。

程序下载后,当键盘矩阵按下1位按键时,该数补充到显示的8位数的低位上,高位左移。

比如,数码管原来显示01234567,如果键盘按下8,则数码管显示变为12345678。

4x4键盘矩阵

Page 31: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO Page 31

4x4键盘矩阵

Page 32: 至芯科技 - bfiles.chinaaet.combfiles.chinaaet.com/luhui/blog/20171214/1000077810... · 本节课我先简要地介绍一下键盘矩阵的物理原理,然后实际演示一下键

LOGO

至芯科技

QQ群 282124839

微信 189-0102-9989

QQ 905703953