基于VHDL的矩阵键盘及显示电路设计

基于VHDL的矩阵键盘及显示电路设计

ID:40639621

大小:488.00 KB

页数:5页

时间:2019-08-05

基于VHDL的矩阵键盘及显示电路设计_第1页
基于VHDL的矩阵键盘及显示电路设计_第2页
基于VHDL的矩阵键盘及显示电路设计_第3页
基于VHDL的矩阵键盘及显示电路设计_第4页
基于VHDL的矩阵键盘及显示电路设计_第5页
资源描述:

《基于VHDL的矩阵键盘及显示电路设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、摘 要:为了有效防止机械式键盘按键抖动带来的数据错误,这里在QuartusⅡ开发环境下,采用VHDL语言设计了一种能够将机械式4×4矩阵键盘的按键值依次显示到8个7段数码管上的矩阵键盘及显示电路。仿真结果表明,所设计的矩阵键盘及显示电路成功地实现了按键防抖和按键数据的准确显示。以ACEX1K系列EP1K30QC208芯片为硬件环境,验证了各项设计功能的正确性。  FPGA/CPLD在数字系统设计中的广泛应用,影响到了生产生活的各个方面。在FPGA/CPLD的设计开发中,VHDL语言作为一种主流的硬件描述语言,具有设计效率高,可靠性好,易读易懂等诸多优点。作为一种功能强大的FPGA

2、/CPLD数字系统开发环境,Altera公司推出的QuartusⅡ,为设计者提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程,为使用VHDL语言进行FPGA/CPLD设计提供了极大的便利。矩阵键盘作为一种常用的数据输入设备,在各种电子设备上有着广泛的应用,通过7段数码管将按键数值进行显示也是一种常用的数据显示方式。在设计机械式矩阵键盘控制电路时,按键防抖和按键数据的译码显示是两个重要方面。本文在QuartusⅡ开发环境下,采用VHDL语言设计了一种按键防抖并能连续记录并显示8次按键数值的矩阵键盘及显示电路。  1 矩阵键盘及显示电路设计思路  矩阵

3、键盘及显示电路能够将机械式4×4矩阵键盘的按键值依次显示到8个7段数码管上,每次新的按键值显示在最右端的第0号数码管上,原有第0~6号数码管显示的数值整体左移到第1~7号数码管上显示,见图1。总体而言,矩阵键盘及显示电路的设计可分为4个部分:  (1)矩阵键盘的行及列的扫描控制和译码。该设计所使用的键盘是通过将列扫描信号作为输入信号,控制行扫描信号输出,然后根据行及列的扫描结果进行译码。  (2)机械式按键的防抖设计。由于机械式按键在按下和弹起的过程中均有5~10ms的信号抖动时间,在信号抖动时间内无法有效判断按键值,因此按键的防抖设计是非常关键的,也是该设计的一个重点。  (3

4、)按键数值的移位寄存。由于该设计需要在8个数码管上依次显示前后共8次按键的数值,因此对已有数据的存储和调用也是该设计的重点所在。  (4)数码管的扫描和译码显示。由于该设计使用了8个数码管,因此需要对每个数码管进行扫描控制,并根据按键值对每个数码管进行7段数码管的译码显示。  2 矩阵键盘及显示电路的实现  本文所设计的矩阵键盘及显示电图2所示。其中,clk为时钟信号输入端(频率可为1024~32768Hz);start为清零控制端;kbrow为列扫描信号输入端;kbcol为行扫描信号输出端;scan为数码管地址扫描信号输出端;seg7为数码管显示信号输出端。图1 矩阵键盘及显示

5、电路原理图图2 矩阵键盘及显示电路的电路符号限于篇幅,在此不详述所设计矩阵键盘及显示电路的全部VHDL代码,只对部分重要代码段落进行详细说明。  如图1所示,全部代码由7个进程(process)组成。其中,进程P1和P2用于对列扫描输入信号kbrow进行读取,并通过或非运算产生行扫描使能控制信号en对行扫描输出信号kbcol进行控制,并生成一个与kbcol对应的状态信号state。若没有按键被按下(即kbrow=“0000”),则en=‘1’,行扫描输出信号kbcol不断循环扫描各行;若有按键被按下,en=‘0’,则行扫描停止,并锁存当前kbcol的值。进程P1和P2的代码如下:

6、  进程P3使用“case?when”语句,根据状态信号state的值(即kbcol的值)和列扫描输入信号kbrow的值进行按键值译码,生成一个4位二进制按键数值信号dat,用以记录当前按键值。例如,当kbcol=“0010”,kbrow=“0001”时“B”键按下,dat=“1011”。进程P3的代码在此不再赘述。进程P4和P5用于按键的防抖和按键值的移位寄存。通过将行扫描使能控制信号en不断赋给一个8位二进制变量reg8,再将reg8赋给8位二进制信号key,实现对按键状态的记录,然后通过对key的各位数值进行与运算,生成防抖控制信号fnq。一旦有按键按下,en=‘0’,则即

7、便是按键在抖动,key中至少也有1位数值为‘0’,从而使fnq=‘0’。只有当按键再次弹起,并且在连续8个时钟周期内不再有新的按键按下,key的数值全为‘1’,则fnq=‘1’,fnq产生一个上升沿,从而触发按键数值信号dat进入数值寄存信号temp(32位二进制数)的第0~3位,并将temp原来的第0~27位左移到第4~31位,实现1次按键按下的数值存储。进程P4和P5的代码如下:  进程P6用于将数值寄存信号temp的32位二进制数分配给8个数码管,从而生成数码管地址扫描输出

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。