论文部分内容阅读
摘要:本文给出了嵌入式系统键盘接口模块的实现方案,并着重对键盘扫描与状态判决、键码输出、键盘命令接收与响应三部分的FPGA实现做了详细阐述。
关键词:嵌入式系统;键盘;FPGA
概述
随着微电子和计算机技术和应用不断创新,军用通信装备或民用信息终端的通信功能和信号处理能力与日俱增,与此同时,不同的通信终端对于系统功能、实时性、可靠性、安全性及体积重量等方面有着不同的要求,这促使嵌入式系统得以更广泛地应用。
图一
通信终端不仅要求系统完成终端控制功能,同时要完成通信和数字信号处理功能。由于FPGA支持高速的并行运算,因而高速数字信号处理通常由FPGA来完成;同时由于FPGA在时序控制方面的优势及软件定义接口方面的灵活性,FPGA也是嵌入式处理器和系统外设连接桥梁。可编程器件厂商更将处理器硬核或软核植入FPGA器件中,构成片上可编程系统(sOPC)。
军用或民用的手持、背负、车载或固定台站等通信设备中,键盘都是不可或缺的输入单元。键盘接口部分负责自定义键盘和嵌入式处理器的连接,完成键盘扫描、键码产生、命令接收与响应等功能。系统框图如图1所示。
图1中键盘与接口模块之间的连接是行列扫描信号,键盘接口模块与MCU之间的连接则是标准的AT/PS2接口,其中时钟线与数据线相应时序关系可参阅相关规范。双向端口表明键盘接口模块需要向嵌入式处理器提供正确的扫描码,同时还需要接收处理器相关的控制指令,如码集选择、Typematic速率和延迟设定等。
键盘扫描与状态判决
键盘扫描电路由按键和上拉的行列扫描线构成,FPGA根据扫描时序对行(或列)输出低电平,同时由列(或行)读入当前键盘状态。由于有多重按键的可能,在行(或列)的空闲时间由FPGA配置为高阻态。扫描电路如图2所示。
键盘接口模块正确生成键码的基础是对键按下或释放的状态有正确的判决。实际键盘在被按下或释放时,扫描信号存在不稳定态,同时即使按键状态未做改变,扫描线上也可能有干扰,因此需采用多次采样、大数判决的去抖动方案,综合考虑击键或释放的稳定时间以及击键保持时间,时间跨度选为27ms,采用3/2大数译码,相应的扫描脉冲时序如图3所示。
键盘扫描参数受嵌入式处理器命令控制,其中Typematic的速率(1/T2)和延迟参数(T1)与键盘扫描时序直接相关,该参数由0xF3命令置人,在bit7~bit0中,bit7常为“0”,bit6、bit5记为“C”,bit4、bit3记为“B”,bit2、bitl和bit0记为“A”,有:
·Typematic速率=1/((8+A)×(2B)×0.00417)chars/sec。
·Typematic延迟=(C+1)×250ms。
·缺省参数为:Typematic速率=10.9 chars/sec20%;Typematic延迟=500mS 20%。
键盘接口模块对键盘状态的判决还需要正确解决多重按键的问题。除“Pause”键外,所有按键在按下并保持时都会启动Typematic,当有多重按键按下时,最后一个按键进入Typematic状态,并在释放时退出,之前所有按键释放都不影响当前的Typematic状态。定义STM为Typematic当前状态,F为STIV之前所有按键状态集合,多重击键状态转换图如图4所示。
图二
键码生成
键盘接口模块在正确判决出键盘的按下或释放状态之后,需根据嵌入式处理器所设置的键盘扫描码集生成相应的键码,键盘接口模块响应处理器的0xF0命令改变码集设定或返回码集状态。在三种键盘扫描码集中,码集3最为简单,按键单字节,释放双字节(由0xF0为前导),码集2的扫描码字节数则不尽相同,综合击键和释放两种情况,可能的扫描码字节数为1,2,3,4,5,6,8,码集2键码最为复杂,但码集2的应用最为广泛。
将码集2的键码分为5种类型,对应的Make/Break键码字节数分别为l型:1/2;II型:2/3;III型:5/5;IV型:4/6;“Pause'’键码归为V型,Make键码8字节,Ctrl按下时5字节。图5给出了常用码集2的键码产生程序流图。
键盘接口模块通过FPGA片内的RAM存储器构成FIFO型键码缓存区,键码及其前导或后缀都在键码缓存区中缓存,寻址空间一股为25,键码发送优先权最低,且必须能根据相应命令被异步清零。
处理器命令接收优先权最高,即键盘接口模块输出键码时首先检测时钟线和地址线的忙闲状态,仅当两线都为空闲状态时输出键码。时钟线可被嵌入式处理器用于停止输出,即当处理器将时钟线下拉为低电平时,键盘接口模块将停止键码输出,并将当前(校验位已输出的除外)及之后的键码缓存在FPGA开辟的键码缓存区中。
命令接收与响应
键盘接口模块接收到处理器命令后,需对命令译码,并根据具体命令向嵌入式处理器返回相应的应答,同时可能接收后续参数或返回响应信息。应答和响应信息与键码采用相同的串行方式发送,其优先权介于命令和键码之间,相应的状态转换图6所示。
为增强键盘接口模块的可靠性,在进入参数接收状态(S4)的同时重置并启动一个定时器,当定时器溢出时,将退出参数接收状态以避免因系统的不稳定而进入循环等待。
实验结果
以Altera公司的Cyclone EPlC6为目标器件,在Quartus II4.0环境下对上述键盘接口模块进行了编译与仿真,结果如图6所示。
上述编译结果表明键盘接口模块占用很少的逻辑单元(约7%),便于移植到嵌入式系统中,同时可根据实际应用对模块进行裁减,实际所占资源将进一步减少。
实测结果表明键盘的准确度和灵敏度完全达到设计要求,模块中扫描码集、扫描延迟、扫描间隔等参数可根据系统需求灵活地改变,充分满足了嵌入式系统的使用需求。
参考文献:
1.任爱锋等编著,基于FPGA的嵌入式系统设计,西安电子科技大学出版社,2004.10
2.姜雪松,可编程逻辑器件和EDA设计技术,张海风编著,机械工业出版社,2006.1
3.吴继华,王诚编著,Altera FPGA/CPLD设计(高级篇),人民邮电出版社,2005.7
4.李伯成编著,嵌入式系统可靠性设计,电子工业出版社,2006.1
关键词:嵌入式系统;键盘;FPGA
概述
随着微电子和计算机技术和应用不断创新,军用通信装备或民用信息终端的通信功能和信号处理能力与日俱增,与此同时,不同的通信终端对于系统功能、实时性、可靠性、安全性及体积重量等方面有着不同的要求,这促使嵌入式系统得以更广泛地应用。
图一
通信终端不仅要求系统完成终端控制功能,同时要完成通信和数字信号处理功能。由于FPGA支持高速的并行运算,因而高速数字信号处理通常由FPGA来完成;同时由于FPGA在时序控制方面的优势及软件定义接口方面的灵活性,FPGA也是嵌入式处理器和系统外设连接桥梁。可编程器件厂商更将处理器硬核或软核植入FPGA器件中,构成片上可编程系统(sOPC)。
军用或民用的手持、背负、车载或固定台站等通信设备中,键盘都是不可或缺的输入单元。键盘接口部分负责自定义键盘和嵌入式处理器的连接,完成键盘扫描、键码产生、命令接收与响应等功能。系统框图如图1所示。
图1中键盘与接口模块之间的连接是行列扫描信号,键盘接口模块与MCU之间的连接则是标准的AT/PS2接口,其中时钟线与数据线相应时序关系可参阅相关规范。双向端口表明键盘接口模块需要向嵌入式处理器提供正确的扫描码,同时还需要接收处理器相关的控制指令,如码集选择、Typematic速率和延迟设定等。
键盘扫描与状态判决
键盘扫描电路由按键和上拉的行列扫描线构成,FPGA根据扫描时序对行(或列)输出低电平,同时由列(或行)读入当前键盘状态。由于有多重按键的可能,在行(或列)的空闲时间由FPGA配置为高阻态。扫描电路如图2所示。
键盘接口模块正确生成键码的基础是对键按下或释放的状态有正确的判决。实际键盘在被按下或释放时,扫描信号存在不稳定态,同时即使按键状态未做改变,扫描线上也可能有干扰,因此需采用多次采样、大数判决的去抖动方案,综合考虑击键或释放的稳定时间以及击键保持时间,时间跨度选为27ms,采用3/2大数译码,相应的扫描脉冲时序如图3所示。
键盘扫描参数受嵌入式处理器命令控制,其中Typematic的速率(1/T2)和延迟参数(T1)与键盘扫描时序直接相关,该参数由0xF3命令置人,在bit7~bit0中,bit7常为“0”,bit6、bit5记为“C”,bit4、bit3记为“B”,bit2、bitl和bit0记为“A”,有:
·Typematic速率=1/((8+A)×(2B)×0.00417)chars/sec。
·Typematic延迟=(C+1)×250ms。
·缺省参数为:Typematic速率=10.9 chars/sec20%;Typematic延迟=500mS 20%。
键盘接口模块对键盘状态的判决还需要正确解决多重按键的问题。除“Pause”键外,所有按键在按下并保持时都会启动Typematic,当有多重按键按下时,最后一个按键进入Typematic状态,并在释放时退出,之前所有按键释放都不影响当前的Typematic状态。定义STM为Typematic当前状态,F为STIV之前所有按键状态集合,多重击键状态转换图如图4所示。
图二
键码生成
键盘接口模块在正确判决出键盘的按下或释放状态之后,需根据嵌入式处理器所设置的键盘扫描码集生成相应的键码,键盘接口模块响应处理器的0xF0命令改变码集设定或返回码集状态。在三种键盘扫描码集中,码集3最为简单,按键单字节,释放双字节(由0xF0为前导),码集2的扫描码字节数则不尽相同,综合击键和释放两种情况,可能的扫描码字节数为1,2,3,4,5,6,8,码集2键码最为复杂,但码集2的应用最为广泛。
将码集2的键码分为5种类型,对应的Make/Break键码字节数分别为l型:1/2;II型:2/3;III型:5/5;IV型:4/6;“Pause'’键码归为V型,Make键码8字节,Ctrl按下时5字节。图5给出了常用码集2的键码产生程序流图。
键盘接口模块通过FPGA片内的RAM存储器构成FIFO型键码缓存区,键码及其前导或后缀都在键码缓存区中缓存,寻址空间一股为25,键码发送优先权最低,且必须能根据相应命令被异步清零。
处理器命令接收优先权最高,即键盘接口模块输出键码时首先检测时钟线和地址线的忙闲状态,仅当两线都为空闲状态时输出键码。时钟线可被嵌入式处理器用于停止输出,即当处理器将时钟线下拉为低电平时,键盘接口模块将停止键码输出,并将当前(校验位已输出的除外)及之后的键码缓存在FPGA开辟的键码缓存区中。
命令接收与响应
键盘接口模块接收到处理器命令后,需对命令译码,并根据具体命令向嵌入式处理器返回相应的应答,同时可能接收后续参数或返回响应信息。应答和响应信息与键码采用相同的串行方式发送,其优先权介于命令和键码之间,相应的状态转换图6所示。
为增强键盘接口模块的可靠性,在进入参数接收状态(S4)的同时重置并启动一个定时器,当定时器溢出时,将退出参数接收状态以避免因系统的不稳定而进入循环等待。
实验结果
以Altera公司的Cyclone EPlC6为目标器件,在Quartus II4.0环境下对上述键盘接口模块进行了编译与仿真,结果如图6所示。
上述编译结果表明键盘接口模块占用很少的逻辑单元(约7%),便于移植到嵌入式系统中,同时可根据实际应用对模块进行裁减,实际所占资源将进一步减少。
实测结果表明键盘的准确度和灵敏度完全达到设计要求,模块中扫描码集、扫描延迟、扫描间隔等参数可根据系统需求灵活地改变,充分满足了嵌入式系统的使用需求。
参考文献:
1.任爱锋等编著,基于FPGA的嵌入式系统设计,西安电子科技大学出版社,2004.10
2.姜雪松,可编程逻辑器件和EDA设计技术,张海风编著,机械工业出版社,2006.1
3.吴继华,王诚编著,Altera FPGA/CPLD设计(高级篇),人民邮电出版社,2005.7
4.李伯成编著,嵌入式系统可靠性设计,电子工业出版社,2006.1