基于FPGA的键盘扫描模块的设计与实现 (3)

2010-08-12 18:25:22   作者:王志辉 林水生   来源:国外电子元器件   

关键字:FPGA 键盘扫描模块

  2 基于FPGA的实现方法

  2.1 实现方法分析

  根据项目的实际需要,拟实现的键盘扫描模块应具有如下特点:

  该模块实时地将扫描所得的键值信息写入存储器指定地址,键值信息包括同一按键的重复次数和键值,系统软件定时从该地址读取键值信息以执行相应的操作。

  键盘去抖动的方法是多次扫描法,当连续几次扫描到同一键值时就认为此键被按下,这样就完成了去抖动操作。

  由于该项目不需要ASCⅡ字符编码按键,故将按键值设计为1~20直接送出。

  为了能表示长时间按键的操作,当确定某一按键按下时,以后每隔一定时间才扫描一次,若获得同一键值,则将按键重复次数加一,同时将重复次数和键值组合成键值信息送出;延迟一定时间后再次扫描。

  2.2 FPGA具体实现

  该设计采用4个模块来实现键盘扫描功能,分别为即时扫描模块、扫描控制模块、扫描脉冲模块和键值传送模块,如图3所示。

实现键盘扫描的功能模块

  2.2.1 即时扫描模块

  该模块完成键盘即时扫描功能,当检测到SCAN信号有一个窄脉冲到来时,模块内部将产生一组相应的KB_OUT信号输出到键盘矩阵,然后对KB_IN输入信号进行检测,以判断有无键被按下及哪个键被按下,并送出相应的即时键值VALUE。

  2.2.2 扫描控制模块

  该模块的功能是控制是否允许进行扫描及完成键盘去抖动等。在无键按下时.CTRL置高电平允许扫描;当连续几次扫描到同一个按键时,则认为此键被按下(已经完成去抖动操作)。然后CTRL置低电平,禁止扫描并同时开始延时,当CNT达到某一数值时,重新进行扫描并再次延时,同时将按键重复次数和键值VALUE组合成KEYVALUES并输出。以此类推,直到无键按下或检测到其他的键值。

  2.2.3 扫描脉冲模块

  该模块的主要功能为产生扫描指示窄脉冲和扫描延时计数。当CTRL为高电平时,在每个CLK为50Hz的上升沿送出一个SCAN窄脉冲;当CTRL为低电平时,延时计数器开始计数,达到某一特定值时才送出一次扫描脉冲信号SCAN。

  2.2.4 键值传送模块

  该模块负责把键值信息写入存储器,供应用软件定时查询。当输入端KE

YVALUES的值发生改变时,才会发起一次存储器写操作。

  3 结束语

  此模块用VHDL硬件描述语言来实现,经过功能、时序仿真后利用QUARTUS Ⅱ软件进行编译并下载到Altera的CYCLONE 1C20开发板上。经过对键盘的实际操作检验,证明此模块可以正常实现键盘扫描和去抖动等功能,能正确地识别每一个按键的动作。同时,若对该模块稍加修改同样可以移植到其他的系统中,这样可以大大减轻CPU的运行负荷,这对大多数对系统资源比较敏感的嵌入式系统来说具有很强的现实意义。

[1] [2] [3]
相关阅读
赛灵思隆重发布嵌入式FPGA程序员双认证项目 2012-01-12
赛灵思 7 系列 FPGA 强大系统集成能力 2012-01-06
基于FPGA的行间转移面阵CCD驱动电路设计 2011-12-28
基于FPGA的AMLCD控制器的设计 2011-12-28
基于FPGA的8PSK软解调的研究与实现 2011-12-27
基于FPGA的宽带数字信道化接收机的设计 2011-12-27
基于FPGA的智能仪器远程控制系统设计 2011-12-27
一种基于FPGA的无线射频读卡器开发与设计 2011-12-27
简述DDS原理及其基于FPGA的实现 2011-12-27
基于FPGA与RS422的MⅢ总线转换板的设计与实现 2011-12-27
基于FPGA与RS422的MⅢ总线转换板的设计与实现 2011-12-27
编辑:小甘
本文引用地址: http://www.eeworld.com.cn/FPGA/2010/0812/article_1291.html
[发表评论]
[加入收藏]
[告诉好友]
[打印本页]
[关闭窗口]
[返回顶部]
[RSS订阅]

小广播

最热点击

专栏

向农,EEWORLD副总编。被英特尔董事长贝瑞特称为“中国可与之对话的两名记者之一”

【详细】

总编随笔
汤宏琳,人皆称为“汤汤”,电子工程世界高级编辑。随着EEWORLD一起成长。

【详细】

汤汤手记
今年,是中国集成电路产业丰收的一年,相比较往年都有大幅提升。

【详细】

凯哥博客

论坛精华

精选博文