摘要在现代电子工业的控制电路中,键盘扫描和显示电路对系统的调试和设置有着重要的作用。
随着EDA技术的发展,基于FPGA的扫描键盘因其结构简单,能有效防止机械键盘按键抖动带来的数据错误等优点在许多电子设备中都得到了广泛的应用。
本文主要是设计一个基于FPGA的键盘扫描程序,该设计在EDA工具Quarutus II9.0上开发完成,以Creat-SOPC2000实验箱上的4*4矩阵键盘为硬件实体,设计键盘扫描程序,将程序划分为时序产生模块、键盘扫描模块、弹跳消除模块、键值译码模块四个模块,时序产生模块为键盘扫描和弹跳消除模块产生时钟信号,键盘扫描模块采用行扫描法对4*4矩阵键盘进行扫描,键值译码模块将所按键值译码为共阳极8位7段数码管的显示码,几个模块组合起来实现键盘扫描的设计要求。
最后对程序进行仿真分析和硬件验证。
仿真结果表明,该系统具有集成度高、稳定性好、设计灵活和设计效率高等优点。
关键词: FPGA,Quartus II,VHDL,键盘扫描ABSTRACTIn the modern electronics industry controlling-circuit, the keyboard scanning and display circuit plays an important role in debugging and setting the system. With the development of EDA technology, FPGA-based scanning keyboard have been widely used in many electronic devices because of its simple structure, and it also can effectively prevent mechanical keyboard jitter caused by data errors.This article primarily designed an FPGA-based keyboard scan procedures, this design is developed on the EDA tools—— Quarutus II9.0 and designed the keyboard scan program, using the Creat-SOPC2000 experimental box 4 * 4 matrix keyboard as the hardware entity .the program is divided into four modules as the timing generation module, a keyboard scanning module, bounce cancellation module and the decoding module. The timing generation module generates the clock signal for the keyboard scanning and bounce elimination module, the keyboard scanning module using the line scanning method to sweep the 4* 4 matrix keyboard, key decoder module decodes the key value for the common anode eight 7-segment display code. Several modules assembles together to meet the keyboard scanning design requirements. Finally, conducting simulation analysis by the program and verifying the hardware.Simulation results show that the system has many advantages such as high integration, good stability, high efficiency, flexible design and high design efficiency.Keywords: FPGA,Quartus II,VHDL,keyboard scanning目录摘要 (I)ABSTRACT .......................................................................................................... I I 第1章绪论 (1)1.1 课题的研究背景 (1)1.2 课题的研究意义 (2)1.3 本文的主要工作 (2)第2章FPGA开发工具简介 (3)2.1 FPGA概述 (3)2.2 VHDL语言以及Quartus II应用 (3)2.3 本章小结 (4)第3章基于FPGA的键盘扫描程序的设计 (3)3.1 键盘扫描程序的总体电路设计 (5)3.1.1 矩阵式键盘扫描的工作原理 (6)3.1.2 数码管的显示原理 (7)3.2 键盘扫描电路各主要功能模块的设计 (8)3.2.1 时序产生模块 (8)3.2.2 键盘扫描模块 (9)3.2.3 弹跳消除模块 (11)3.2.4 键盘译码电路 (13)3.2.5 键盘扫描程序的顶层文件设计 (15)3.3本章小结 (16)第4章键盘扫描程序的波形仿真及硬件验证 (17)4.1 系统仿真 (17)4.1.1 消抖电路仿真 (17)4.1.2 键盘时钟信号仿真 (18)4.1.3 键盘扫描信号仿真 (18)4.1.4 键盘译码电路仿真 (19)4.1.5 键盘扫描总体电路仿真 (21)4.2引脚的锁定 (22)4.3硬件验证 (23)4.4本章小结 (25)结论 (26)参考文献 (27)附录 (28)致谢 (32)第1章绪论1.1 课题的研究背景在现代计算机与电子系统中,一般都采用通用式的标准键盘将所需的数据和指令等信息通过键盘输入到计算机和电子系统,以此来实现人机之间的接口交互。
但是,在各种嵌入式系统(如微波炉、手机、电风扇等)中的键盘按键个数有限,一般为几个到十几个左右,而标准键盘则一般在一百多个左右,并且每个按键都有其各自的功能含义。
所以针对每一种电子设备对其键盘进行扫描程序的设计时,必须结合工程的实际情况以及设备自身的各种资源,使所设计的键盘能够很好地融合到系统中,成为其重要的组成部分。
在数字电路中,如果将每个按键的输出信号连接到编码器对应的输入端,通过编码逻辑在编码器的输出端得到每个按键对应的键值,利用编码器实现按键键值的直接编码,这种键盘在早期称为编码键盘。
但是,这类键盘有许多缺点如按键数量较多时编码逻辑的成本就会相对变高.直接编码的方法也具有很大的局限性,编码逻辑一旦固定就难以改变。
现代数字电路中,一般当按键数量较多时,我们采用扫描的方式来产生键值。
用矩阵的形式连接按键,使每个按键位于行、列的相交点上,通过输入扫描信号确定所按按键的行值和列值,即位置码也称扫描码,再通过查表或译码的方式将位置码转换为按键码值,采用这类方式扫描的,我们习惯称其为“非编码键盘”。
在执行键盘扫描的过程中,因大多数键盘采用的都是机械开关,所以按键在闭合时往往会出现一些难以避免的机械性抖动,输出信号随之也发生跳变,其跳变宽度一般在10 ms一20 ms之间。
若不对其进行处理,则系统很有可能会将其误认为多次按键。
因此在系统中须设置硬件延时电路,按键输入在经过一定时间的延迟后方可读取键值,即键盘系统中常出现的去抖电路。
还有一种情况是当前面按键键值还没输出但已近有新的按键按下时,后按的键值就会覆盖前面的键值,造成数据的丢失。
这时可以在系统中设置一个控制信号,确保前一按键的键值输出后才允许后一键值的产生,又或设置一组寄存器来保存按键的键值,然后系统依序对其进行处理。
这类扫描键盘的优点在于不需要主机担负扫描任务,而是由软件程序完成,其次也可通过更改程序来改变按键的功能定义。
基于FPGA的键盘扫描程序,由芯片中的键盘扫描程序对键盘进行扫描,按键时,系统通过时钟模块启动扫描程序,依次对每行键值赋值来扫描每行,再通过键盘每列的输出来确定按键位置,这种扫描方法被称为逐行扫描法,当有键按下时首先获得此键的列值,然后逐行扫描就可以判断按键所在的行值,由行、列的值可以得出按键的键值。
此外,还需在键盘扫描程序的中加入延时程序,以消除机械键盘按键抖动所带来的影响。
如果键盘的扫描频率设置过低,则在扫描显示的过程中,会出现按键显示迟缓,甚至乱码等现象。
因此在实际的设计中,需根据设计要求及系统的硬件规格选择合适的扫描平率。
现代数字设备中的键盘大多采用这样的键盘扫描方法[1-6]。
1.2 课题的研究意义从计算机时代开始以来,数字系统设计就存在两个大的分类,即系统硬件设计和系统软件设计。
早期的数字系统设计人员也因此被分为两个族群:硬件设计人员和软件设计人员,他们都只从事自己的工作领域,很少涉足对方的领域,尤其是软件设计人员。
但是,随着数字技术和硬件系统的发展,这两个领域开始互相有所合作。
在硬件描述语言HDL(Hardware Description Language)出现后,数字系统的设计已无软硬件之分。
设计人员可以用HDL语言来描述系统的硬件构成及其行为,并通过仿真确定其运用到系统硬件上时是否可行,设计出符合要求的硬件系统。
不仅如此,利用HDL语言来设计系统硬件同传统的硬件设计方法相比,具有其独特的优势,它为系统的硬件设计带来了深远的影响,是硬件设计领域的一次重要的变革。
传统的键盘扫描是以硬件电路来确定键盘的变化,特定的硬件电路只能应用于特定的键盘,因此它存在这样一些缺点:不能根据实际应用的改变而变化,形式固定。
本文所采用的技术方案能克服上述所讲的技术缺点,该键盘扫描程序是由软件控制完成,不需要改变硬件电路,就可以适用于多种不同类型的键盘。
整个系统设计是自动化过程,减少了工作量,主要把精力放在创造性的方案和概念构思上,提高了工作效率,缩短了产品的研制周期。
1.3 本文的主要工作本设计主要是以计算机为设计平台,综合运用EDA软件工具开发环境,使用硬件描述语言VHDL,采用自顶而下的设计方法,把系统由上至下的分成几个模块设计,最后达到系统的要求,然后在Quartus II9.0上通过编程、调试、编译、仿真,从而实现键盘扫描的设计。