微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于FPGA的键盘扫描模块的设计

基于FPGA的键盘扫描模块的设计

时间:06-06 来源:互联网 点击:

N:扫描指示信号,每一个正脉冲到来时执行一次键盘扫描

输出信号:

KB一 OU T[4:O]:输出到键盘的控制信号,以便从键盘矩阵取得相应的信

号并进行检测;

VALUE[7:0]:扫描所得的即时键值输出到扫描控制模块,以便进行抖动。

模块功能描述:

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

(2)扫描控制模块

输人信号:

CLKSOHZ:时钟信一号,用于产生时序;

V ALUE[7:0]:由即时扫描模块送来的即时键值;

CNT[4:0]:来自扫描脉冲模块的计数器值,用于对扫描进行延时。

输出信号:

KEYVALUES[15:0]:此值为去抖动后的键值与按键重复次数组合而成的数据;

CTRL:扫描使能信号.高电平为使能,低电平为禁止。

模块功能描述:

本模块用于控制是否允许进行扫描以及完成键盘去抖动等。在无键按下时,CTRL置高电平以允许扫描;当连续几次扫描到同一个按键时,则认为此键被按下了(已经完成了去抖动操作)。然后CTRL置低电平以禁止扫描同时开始延时,当CNT达到某一数值时,重新进行扫描并再次延时。

同时将按键重复次数和键值VALUE组合成KEYVALUES并输出。以此类推,直到无键按下或检测到其他的键值。

(3)扫描脉冲模块

输人信号:

CLK50HZ:时钟信号,用于产生时序;

CLKSMHZ:时钟信号,用于产生时序;

CTRL:扫描使能信号,高电平为使能,低电平为禁止。

输出信号:

SCAN:扫描指示信号,每输出一个正脉冲执行一次键盘扫描;

CNT[4:O]:扫描延时计数器,用于对扫描进行延时。

模块功能描述:

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

(4)健值传送模块

输人信号:

SYSCLK:系统时钟信号,用于产生时序;

KEYVALUES[15:0]:此值为去抖动后的键值与按键重复次数组合而成的数据。

输出信号:

WRITE_ N:存贮器的写使能信号,低电平有效;

ADDRESS[31:0存贮器的键值信息写人地址,为恒定值;

KEYVALUE[ 15:0]:要写人存贮器的键值信息,其中包括按键重复次数和键值。

模块功能描述:

本模块负责把键值信息写入存贮器,供应用软件定时查询。当且仅当输人端KEYVALUES的值发生改变时.才会发起一次存贮器写操作。

结束语

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top