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

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

ID:61332282

大小:238.00 KB

页数:5页

时间:2021-01-25

基于FPGA和VHDL语言的多按键状态识别系统.doc_第1页
基于FPGA和VHDL语言的多按键状态识别系统.doc_第2页
基于FPGA和VHDL语言的多按键状态识别系统.doc_第3页
基于FPGA和VHDL语言的多按键状态识别系统.doc_第4页
基于FPGA和VHDL语言的多按键状态识别系统.doc_第5页
资源描述:

《基于FPGA和VHDL语言的多按键状态识别系统.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于FPGA和VHDL语言的多按键状态识别系统时间:2010-09-0309:15:08来源:作者: 这里提出一种利用FPGA的I/0端口数多和可编程的特点,采用VHDL语言的多按键状态识别系统,实现识别60个按键自由操作,并简化MCU的控制信号。  2系统设计方案  FPGA是一种可编程逻辑器件,它具有良好性能、极高的密度和极大的灵活性,外围电路简单可靠等特性。因此,该系统设计是由MCU、FPGA、按键等部分组成。60路按键信号进入FPGA单元,以供数据采集;FPGA处理采集到的数据信号,编码后写入内部F

2、IFO。MCU通过I/O端口提取FIFO中的数据。模块通过电源接口向各个部分供电。其系统设计原理框图如图l所示。     2.1FPGA配置电路  FPGA采用Altera公司EPF10K30ATC144,该器件内核采用3.3V供电,端口电压为3.3V可承受5V输入高电平,其工作频率高达100MHz;有102个可用I/0端口,每个端口输入电流最高达25mA,输出电流达25mA;l728个逻辑单元(Les),12288bit的用户Flash存储器,可满足用户小容量信息存储,完全满足系统设计要求。  由于FPG

3、A基于RAM工艺技术,该器件丁作前需要从外部加载配置数据,需要一个外置存储器保存信息,采用可编程的串行配置器件EPC2.其供电电压为3.3V。OE和nCS引脚具有内部用户可配置上拉电阻。FPGA的DCLK、DATA0、nCONFIG引脚信号均来自EPC2。系统上电后,首先FPGA初始化,nSTATUS、CONF_DONE置为低电平。nSTATUS置为低电平后复位,此时EPC2的nCE为低电平,因此选取EPC2,从而数据流从DATA引脚输入到FPGA的DATAO引脚。配置完成后,FPGA将CONF_DONE置

4、为高电平,而EPC2将DATA引脚置为高阻态。其FPGA配置电路如图2所示。   2.2按键电路  图3为一路按键电路,共60个按键(i=1~60)。由于外界环境复杂,按键引线长达6m,保护二极管VDi:在外界干扰信号大于VCC时导通起到保护FPGA的作用。电阻Ri上拉限流,按键未闭合状态下FPGA输入引脚始终处于高电平。  3FPGA内部逻辑设计  FPGA内部功能分为扫描模块、编码模块、控制模块以及同步FIFORAM模块,如图4所示。      图4中,K1~K60为60个按键的输入端,Scan为工作模

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

6、。  3.1扫描模块  扫描模块主要完成扫描按键状态输入和按键的软件去抖动。扫描按键状态输入是以5m8为周期扫描60个输入引脚,将其结果存入60个两位状态移位寄存器。其代码为:     按键去抖有硬件和软件2种实现方式。为了节省成本,充分发挥FPGA器件的功能,该系统设计采用软件去抖。图5为软件去抖动流程。图中State为2位状态移位寄存器,初始值为0,TimeDelay为延时计数器。  软件去抖动过程说明:对状态寄存器的2位数值做异或运算,即m=State_1XorState_2。若m=l,说明按键有动作

7、,则令TimeDelay=1,启动延时计数;若m=O,表明按键处于去抖延时或者平稳状态。这时判断TimeDelay,若TimeDelay=0,则按键处于平稳状态;若0MaxDelay时说明按键已经平稳,将结果送入编码器模块。软件去抖关键代码如下:  3.2编码模块  以0、l表示按键通断状态,60个按键则需要8个字节;在实际中单键动作的概率远远大于多键同时动作的概率,若只对状态发生变化的按键以8位编码方式传输按键信息,则一个按键只需传送一个字节,因此为尽可能地减少MCU的负担,提高实时性,设计为只在按键发生

8、状态变化时才向MCU传输相应按键的编号和状态数据。其编码数据格式如图6所示。     状态位lbit,0表示按键闭合状态,1表示按键打开;数据6bits,即0X01~OX3C分别表示1~60个按键;lbit偶校验位。这样传输一次数据就可完成按键编号和状态的传输。  编码器采用连续和随机2种工作模式。连续工作模式每次扫描后对所有按键依次编码,并获取所有按键的当前状态;而随机工作模式在每次扫描后只对状态发生变化的按键

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。