新闻中心

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

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

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

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

  3.2 编码模块

  以0、l表示通断,60个则需要8个字节;在实际中单键动作的概率远远大于多键同时动作的概率,若只对发生变化的以8位编码方式传输按键信息,则一个按键只需传送一个字节,因此为尽可能地减少MCU的负担,提高实时性,设计为只在按键发生变化时才向MCU传输相应按键的编号和状态数据。其编码数据格式如图6所示。

  状态位lbit,0表示按键闭合状态,1表示按键打开;数据6bits,即0X01~OX3C分别表示1~60个按键;lbit偶校验位。这样传输一次数据就可完成按键编号和状态的传输。

  编码器采用连续和随机2种工作模式。连续工作模式每次扫描后对所有按键依次编码,并获取所有按键的当前状态;而随机工作模式在每次扫描后只对状态发生变化的按键编码。

  3.3 控制模块

  控制模块完成MCU与之间的功能控制,有2个作用:一是根据Scan信号选择编码模块的工作模式,二是产生FIFO RAM的读取操作时序。

  对于模式控制,Scan上升沿触发控制模块,使编码模块进入连续工作模式,扫描完成一周,控制模块发送控制信号使编码模块进入随机工作模式。

  对于读取数据,控制模块根据FIFO RAM的Data[7:0]是否有数据,置位Ready信号。有数据,Ready为低电平;无数据,Ready为高电平。RdClk为读取时钟,相当于确认信号,每读完一个数据,发送一个脉冲。

  3.4 FIFORAM模块

  与MCU通信的接口种类很多,可选择串口、I2C、并口等形式,应用中可根据MCU资源以及项目成本、进度等具体情况选择最合适的一种方式。该设计利用同步FIF0 RAM并口传输。FIF0 RAM模块采用EDA软件库中的标准模块。

  4 仿真结果

  采用Altera公司提供的Quartus II仿真工具,其集成有与硬件实时操作相吻合的硬件测试工具。综合仿真结果如图7所示,时钟SysClk为12 kHz,其仿真结果表明设计达到要求。

  5 结论

  提出器件,描述的特殊键盘设计方案解决远距离、分散、多键动作状态问题,极大节省PCB面积和MCU的I/0端口资源。模块中扫描延迟、扫描间隔等参数可根据系统需求灵活改变,器件使得电路功能的扩展方便,具有极高稳定性和灵活性。这一方案已在实际项目中应用,经现场验证性能稳定可靠。


上一页 1 2 3 4 下一页

评论


相关推荐

技术专区

关闭