目 录
摘 要 ................................................................................................................................................ 1 第一章 EDA技术简介 ...................................................................................................................... 2 第二章 按键去抖设计要求 ............................................................................................................. 3 第三章 按键去抖分析 ..................................................................................................................... 3 第四章 按键去抖设计方案 ............................................................................................................. 4 第五章 按键去抖模块 ..................................................................................................................... 5
5.1 去抖动电路模块 ................................................................................................................ 5 5.2 去抖动电路模块程序 ........................................................................................................ 5 5.3 按键扫描模块 .................................................................................................................... 7 5.4 按键扫描程序 .................................................................................................................... 8 第六章 按键去抖的顶层原理图设计 ............................................................................................. 9
6.1 顶层原理图的源文件 ........................................................................................................ 9 6.2顶层原理图的时序仿真图 ............................................................................................... 10 第七章 学习心得 ........................................................................................................................... 11 课程设计评分表 ............................................................................................... 错误!未定义书签。
.
摘 要
为了解决 FPGA/ CPLD 系统的按键抖动问题, 用 VH DL 语言有限状态机的方法, 在 S0 状态下检测到有按键操作则转入延时状态 S1 ,延时结束后, 用状态 S2 , S3 , S4 对按键进行连续三次取样,如果三次取样均为低电平, 则转入状态 S5并输出按键确认信号,否则, 返回状态 S0。电路经仿真分析, 并下载到, EPM7128ATC100 芯片进行了验证, 能够确保每次按键操作,产生一次按键确认, 有很好的按键消抖效果, 性能稳定。主要创新点是用VHDL语言有限状态机设计按键的消抖。
关键词:按键消抖; 电路仿真; VH DL;状态机
.
.
第一章 EDA技术简介
随着电子技术和计算机技术的飞速发展,电子线路的设计工作也日益显得重要。经过人工设计、制作实验板、调试再修改的多次循环才定型的传统产品设计方法必然被计算机辅助设计所取代,因为这种费时费力又费资源的设计调试方法既增加了产品开发的成本,又受到实验工作场地及仪器设备的限制。
为了克服上述困难,加拿大Interactive Image Technologies公司推出的基于Windows 95/98/NT操作系统的EDA软件(Electronics Workbench“电子工作台”,EWB)。他可以将不同类型的电路组合成混合电路进行仿真。EWB是用在计算机上作为电子线路设计模拟和仿真的新的软件包,是一个具有很高实用价值的计算机辅助设计工具。目前已在电子工程设计等领域得到了广泛地应用。与目前流行的电路仿真软件相比较,EWB具有界面直观、操作方便等优点。他改变了有些电路仿真软件输入电路采用文本方式的不便之处,该软件在创建电路、选用元器件的测试仪器等均可以直接从屏幕图形中选取,而且测试仪器的图形与实物外形基本相似,从而大大提高了电子设计工作的效率。
此外,从另一角度来看,随着计算机技术和集成电路技术的发展,现代电子与电工设计,已经步入了电子设计自动化(EDA)的时代,采用虚拟仿真的手段对电子产品进行前期工作的调试,已成为一种发展的必然趋势。通过对实际电子线路的仿真分析,从而提高对电路的分析、设计和创新能力。
.
.
第二章 按键去抖设计要求
按键开关是电子设备实现人机对话的重要器件之一。由于大部分按键是机械触点, 在触点闭合和断开时都会产生抖动。为避免抖动引起误动作造成系统的不稳定,就要求消除按键的抖动, 确保按键每按一次只做一次响应[ 1, 2] 。随着可编程逻辑器件的综合性能的不断提高,它已经象单片机一样, 广泛应用在各种数字逻辑领域。用可编程逻辑器件直接获取键盘信息也得到广泛的应用。这里提出用VHDL 语言编程的有限状态机的设计方法来实现按键的消抖, 经仿真分析和下载实现,这种方法设计的消抖电路能够很好地实现电路功能,进行快速按键时都能保证每按一次做一次的响应, 且性能稳定。本课程设计的具体要求如下:
(1) 设计一个4路独立键盘输入电路,读取键盘的键值并通过发光二极管显示出来。
(2) 输入为时钟信号CLK(50MHz),按键状态KEY1,KEY2,KEY3,KEY4。 (3) 输出为D1,D2,D3,D4。根据按键的状态控制发光二极管的亮灭。
第三章 按键去抖分析
按键消抖的关键是提取稳定的低电平(或高电平) 状态, 滤除按键稳定前后的抖动脉冲。在用基于VHDL 语言的时序逻辑电路设计按键消抖电路时, 可以用一个时钟脉冲信号对按键状态进行取样,当第一次采样到低电平时,启动延时电路,延时结束后,再对按键信号进行连续三次取样, 如果三次取样都为低电平,则可以认为按键已经处在稳定状态, 这时输出一个低电平的按键确认信号,如果连续三次的取样中, 至少有一次是高电平,则认为按键仍处在抖动状态, 此时不进行按键确认,按键输出信号为高电平。
.
.
第四章 按键去抖设计方案
按键消抖一般采用硬件和软件消抖两种方法。硬件消抖是利用电路滤波的原理实现,软件消抖是通过按键延时来实现。在微机系统中一般都采用软件延时的消抖方法。在用可编程逻辑器件FPGA/ CPLD 设计数字系统中, 也可以用 VHDL 语言设计相应的时序和逻辑电路,对按键信号进行处理,同样可以达到消抖目的。本文利用Altera公司的可编程逻辑器件CPLD 和Quartus,设计性能可靠的按键消抖电路。
该控制电路采用VH DL 语言的有限状态机的设计法来描述和实现, 其状态转换图如图1所示。
图1 按键去状态转换图
电路的复位信号 Reset 有效时,电路进入复位状态S0 ,在S0 状态下时钟信号CLK 以一定的频率采样按键输入信号Key in,如果采样到Key in= 1 则停留在S0状态,并继续采样按键输入信号的状态,一旦采样到输入信号是低电平,即Key in= 0 ,则转入S1 延时状态,进行消抖延时,当延时结束时Delay end= 1 ,则转入在S2 状态,在此状态下时钟信号 CLK 以一定频率采样按键输入Key in 的状态,如果采样到 Key in 为高电平即Key in= 1 则转回状态 S0 ,表示按键仍处在抖动状态,如果采样到Key in= 0 , 则转入状态 S3 ; 状态S3 , S4 的转换过程和条件跟 S2 相同, 在 S4 状态下, 如果Key in= 0 则转入 S5 状态, 当到达状态S5 时,表示经过S2 , S3 , S4 三个连续状态检测按键输入 Key in的状
.