基于FPGA的键盘扫描模块的设计
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
- Linux嵌入式系统开发平台选型探讨(11-09)
- 嵌入式系统中文输入法的设计(03-02)
- 基于MPC755的嵌入式计算机系统设计(05-10)
- WinCE下光电编码器的驱动程序设计(04-12)
- 为什么嵌入式开发人员要使用FPGA(05-13)
- VxWorks几种常用的延时方法介绍(05-16)