新闻中心

EEPW首页>嵌入式系统>设计应用> 基于FPGA和VHDL语言的多按键状态识别系统

基于FPGA和VHDL语言的多按键状态识别系统

作者: 时间:2010-09-03 来源:网络 收藏

本文引用地址://m.amcfsurvey.com/article/151597.htm

  2.2电路

  图3为一路电路,共60个(i=1~60)。由于外界环境复杂,按键引线长达6 m,保护二极管VDi:在外界干扰信号大于VCC时导通起到保护的作用。电阻Ri上拉限流,按键未闭合输入引脚始终处于高电平。

  3内部逻辑设计

  FPGA内部功能分为扫描模块、编码模块、控制模块以及同步FIFO RAM模块,如图4所示。

  图4中,K1~K60为60个按键的输入端,Scan为工作模式选择信号,Ready为读准备好信号,RdClk为读时钟信号,Data[7:0]为数据输出,ModCtr为编码模式控制信号,FIFOWEn为FIFO RAM写使能信号,FIFOIn为FIFO RAM数据输入,State为按键扫描信号。其工作原理为:扫描模块周期扫描按键,其结果送入编码模块;编码模块根据模式控制信号ModCtr选择编码方式编码,将其结果送入FIFO RAM;控制模块产生对FIFO RAM的读取控制信号;MCU可通过Readv、RdClk控制信号读取Data[7:0]数据线上的按键编号和状态数据。

  3.1 扫描模块

  扫描模块主要完成扫描按键状态输入和按键的软件去抖动。扫描按键状态输入是以5 m8为周期扫描60个输入引脚,将其结果存入60个两位状态移位寄存器。其代码为:

  按键去抖有硬件和软件2种实现方式。为了节省成本,充分发挥FPGA器件的功能,该设计采用软件去抖。图5为软件去抖动流程。图中State为2位状态移位寄存器,初始值为0,TimeDelay为延时计数器。



评论


相关推荐

技术专区

关闭