基于RISC的USB指纹键盘的实现

2015-06-23 13:55郭建峰陈有为
西安邮电大学学报 2015年1期
关键词:组合键描述符指纹识别

郭建峰, 王 超, 陈有为

(1.西安邮电大学 计算机学院, 陕西 西安 71012; 2.西安邮电大学 经济与管理学院, 陕西 西安 710121)

基于RISC的USB指纹键盘的实现

郭建峰1,2, 王 超1, 陈有为2

(1.西安邮电大学 计算机学院, 陕西 西安 71012; 2.西安邮电大学 经济与管理学院, 陕西 西安 710121)

针对普通的104键盘无法满足量化市场的要求,设计一种具有指纹安全识别功能的18×8的矩阵键盘。在USB/HID协议的规范下,结合精简指令集设计模式,为YSM246芯片编写固件程序,并借助KeyTest工具对按键进行可视化测试。测试结果表明,指纹安全解锁能够快速准确识别录入的指纹;新增加的35个按键工作性能良好,达到预期的设计目标。

矩阵键盘;指纹识别;USB/HID协议;精简指令集

键盘为人机交互提供了沟通的桥梁[1],随着行业的细化,很多时候需要满足用户自定义按键功能的键[2]。在量化交易市场中,交易员一直期望有一款专业的交易键盘能够为其下单提供第一手快讯,为其技术面分析决策提供理论依据,保障其交易快速、准确。目前除了美国的Bloomberg(美国彭博咨询公司)提供有“彭博专业服务系统”包含一款具有特殊按键的交易键盘外,未见其他类似产品。

键盘设计作为成熟的技术已经被很多学者研究,文献[3]详细全面的阐述了如何搭建USB键盘的开发环境、设计流程等;文献[3-4]对自定义人机交互设备(Human Interface Device,HID)类键盘通信和设计给出了具体案例。但以上研究实现的键盘按键数都比较少,并且不具备可扩展性,安全性也未得到验证。本文提出具有指纹安全识别功能的18×8的矩阵键盘,并对如何建立主机与键盘的通信,YSM246芯片的选用,自定义组合键的设计,指纹采集器的实现等做了全面阐述。

1 键盘通信协议

键盘是一种HID类设备[1],通过USB接口和主机连接。由于操作系统自带了HID类驱动程序,因而用户在开发设计USB设备时可以选择将其枚举为HID类,这样就无需设计庞大的驱动程序,只要调用应用程序编程接口(Application Programming Interface, API)即可完成通信。其中USB枚举HID类设备是通信的第一步,参照HID类固件规范,键盘和主机的通信实质是将一系列说明属性的描述符传给Host,主机通过这些描述符得到键盘的所有信息,然后按照描述符的指令正常工作。HID描述符主要包含5个USB标准描述符:设备描述符、接口描述符、端点描述符、配置描述符、字符串描述符和3个HID类设备特定的描述符:HID类描述符、报告描述符、物理描述符[5]。这些描述符本质是包含各种信息的一个结构体,它们之间的关系是一种层叠关系,最上层是设备描述符,接下层是配置描述符,再下层是接口描述符,最后层是端点描述符。HID类描述符定义报告描述符和物理描述符的状态和大小。报告描述符用于描述设备产生的每块报告和报告中数据的作用。例如:对于鼠标,报告描述符定义项的位置信息,决定输入路径;对于键盘,报告描述符根据按键信息允许软件自定义输入功能。物理描述符是可选的描述符,用于提供与人体相关的信息来激活设备上的控制部分[6]。图1描述了主机枚举HID类设备流程。

图1 主机枚举HID类设备流程

2 芯片及其外围部件

采用YSM246芯片作为USB设备的芯片,此芯片基于8bit的精简指令集(Reduced Instruction Set,RISC)结构的高性能动态口令(one-line password, OTC),具有4K×16bits的OTC ROM和256×8bits的直接或间接通用内存RAM,可以灵活的配置功能。YSM246的结构如图2所示。

各模块的功能如下。

(1)存储器单元(Memory):包含所有RAM、ROM和堆栈的可控制寄存器,同时向程序计数器、操作寄存器和指令解码器单元提供配置寄存器信息。

(2)精简指令集单元(RSCI):运算器和控制寄存器识别存储器发来的指令,将指令的请求发送到中断控制器、时钟控制器。操作寄存器连接矩阵键盘的接口,提供对接口地址和数据的响应。

(3)USB串行接口引擎(SIE):负责衔接USB3.0接口和与操作寄存器通信。

(4)其他:中断控制器(EPIC),主要收集外部中断和内部硬件中断;外设接口(SPI),连接指纹识别器还有供电器等。

图2 YSM246结构及其外围部件

各单元寄存器地址的分配代码如表1所示。

表1 各寄存器的地址偏移量的分配情况表

3 系统的硬件实现

3.1 总体设计

基于YSM246主控芯片,通过USB通信控制实现18×8矩阵键盘的功能,硬件接口电路如图3所示。其中J1和J2分别为矩阵键盘的列线和行线。YSM246为核心代码芯片,将调试好的代码烧录到YSM246中实现需要的功能。同时还包括指纹采集器、USB接头、3个指示灯。系统的供电机制为:当系统电压小于3.6V时和VDD连接,当系统电压大于3.6V时通过0.1uF的电容和VSS相连。所有的接口均为8位具有低/高双向的I/O寄存器,其中PE0-PE7为键盘的8根行线,PA0-PA7,PD0-PD7,和PB0、PB1为18根列线;PB6和PB7连接指纹识别器的数据发送端和接收端。PC6连接USB串口引擎SIE的D+差分信号,PC7连接D-差分信号。PC0-PC2分别控制CapsLock、NumLock和ScrollLock三个LED信号灯。该设计实现了输入按键的检测、指纹信息录入和对比、USB接口与主机通信以及LED指示灯的控制等工作。

3.2 特殊按键的设计

矩阵键盘的设计思想是为了提高I/O接口的利用率,通过行线和列线的交叉点来确定一个按键。如需要16个按键,若采用独立式设计,则至少需要16个I/O接口,而矩阵式最大需要4个I/O接口,提升接口利用率[7]。18×8的矩阵键盘只使用了常用的104个普通按键和35个量化交易市场特需的功能按键,预留5个按键用于扩展之需。35个特殊的按键包含F13到F24股票市场选择按键和交易类型选择按键,如日本市场、美国市场、期权、期货、股指等。A系列是交易参数设置功能键,用于设置价格、手数及其浮动单位如+0.5,-0.5等。B系列是交易软件启动快捷功能键,用于快速启动系统的某些功能性窗口,如查看新闻动态、大盘指数等。C系列是操作类型按键,如做空、做多、平仓。T系列为其他的一些辅助按键。有了这些特殊按键的帮助可以提高证券电子交易效率,实现安全、准确、快捷的下达电子交易指令的功能,帮助交易员实现盈利最大化的目标。F13到F14的设计和普通104按键的原理相同,都只是将这些按键的国际标准码映射到矩阵列表中,因此侧重组合按键的设计。

组合键的实现方式需要3个寄存器分别存放组合键的每个元素,文件声明头寄存器的代码如下。

图3 硬件电路的设计

以A系列A1组合键为例说明组合键的设计流程。

(1)设置A1在矩阵中的位置信息,KSC_KEY_INDEX为指向矩阵列的索引,由R0C0确定的位置为0号索引,按照列的方向递增, A1为第10个按键。

(2)按照文献[8-9]的标准设置好位置信息后跳转至KEY_A1代码段,KEY_A1代码段主要实现的功能是将数字1(扫描码为0xE1)放入寄存器KSC_KEY_ARR3中。

(3)再跳转至KEY_A代码段。

组合键A1的实现代码如下。

KSC_FUNC_35_KEY:

BTSC KSC_PROC_FLAG,FUNC_KEY

RETURN

MOV A,@10 ;A1

XOR A,KSC_KEY_INDEX

BTSC STATUS,Z

JMP KEY_A1

KEY_A1:

MOV A,@0X1E

MOV KSC_KEY_ARR3,A

JMP KEY_A

KEY_A:

MOV A,@0X13

MOV KSC_KEY_ARR2,A

MOV A,@0X04

MOV KSC_KEY_ARR1,A

JMP KSC_FUNC_35_KEY_END

由于A系列的组合键中共有元素a和p,所以KEY_A代码段主要是将a和p分别存入KSC_KEY_ARR1和KSC_KEY_ARR2中,以便A系列的其他按键调用这段共同代码,这样一个组合键所需的所有元素都分别放入了不同的寄存器中。然后执行KSC_FUN_35_KEY_END代码段。其他组合键的设计过程同理,不再累述。

3.3 指纹识别器的设计

键盘不仅在104个按键的基础上新增了35个按键,而且最大的特点加入了指纹识别器。指纹识别器相当于一把键盘钥匙,只有个人的指纹扫描被验证后键盘才可以使用,为普通的键盘新增了生物安全识别技术。该设计选用的是体积小、成本低、可以使用USB供电的电容传感器式的指纹采集器。其架构如图4所示。

图4 指纹采集器的结构图

3.3.1 获取指纹图像

人体的指纹具有唯一性,即使具有相同的总体特征,局部特征也不可能完全相同。所以在获取指纹图像时首先获取总体特征,再获取细节特征,包括指纹类型、方向、坐标、曲率和结构关系[10]。指纹采集器使用的是串行外围设备接口(Serial peripheral interface,SPI)协议,SPI仅含4根信号线:串行数据输入、串行数据输出、移位时钟和低电平有效使能。FP_Send_Packet_Head代码段即实现SPI协议信号入口地址的设置。

FP_Send_Packet_Head:

MOV A,@0xEF

CALL UART_Write_Byte

MOV A,@0x01

CALL UART_Write_Byte

MOV A,@0xFF

CALL UART_Write_Byte

MOV A,@0xFF

CALL UART_Write_Byte

MOV A,@0xFF

CALL UART_Write_Byte

MOV A,@0xFF

CALL UART_Write_Byte

RETURN

3.3.2 特征值提取、分类及匹配

提取指纹特征值时也是根据总体特征和局部特征分步进行的。提取总体特征时仅做10次搜索,FP_Search_Figure_0_9代码实现局部特征值提取。提取细节特征时需要更大的搜素范围,从0到999,以便提取更多的细节情况,FP_Search_Finger代码段完成指纹细节特征的提取。

获取指纹模块库将指纹分类后分别存入Buffer1和Buffer2,将两个缓存器中合成的指纹特征模板与指纹库进行比对得出结果。分别由FP_Get_Templete_Num,FP_Image_To_Buffer1,FP_Image_To_Buffer2和FP_Reg_Model代码段实现,代码结构基本一致,在入口处调用UART_Write_Byte代码段写入数据。

完成指纹的处理后,需要使用系统时录入指纹信息。系统会对录入的指纹和指纹库中的指纹做出比对,判断此指纹是否已在指纹库中。以下是指纹匹配的执行代码。

BTSS FP_PROC_FLAG,FP_CHECK

JMP _DATAOUT_OVER

BTSC FP_PROC_FLAG,FP_CHECK

至此已经完成了主要的按键和指纹程序。

4 性能测试

按照原理图接好线路,分别测试按键和指纹识别是否达到预期的要求。指纹识别器相当于一个键盘钥匙,只有输入的指纹被验证后键盘的按键才可以正常使用。

首先测试指纹模块的性能。指纹采集器有4根连线,分别为电源VCC(+5V)、地GND、发送端TD和接收端RD。因此TD接主芯片的RD端(即PB6管脚),RD接主芯片的TD端(即PB7管脚)。指纹采集器支持的是SPI协议,可以使用USB为其供电。这样就可以将指纹采集器和主芯片YSM246接通。在完成以上连线工作后,若不录入指纹,所有的按键都不起作用。在第一次输入指纹时需要按下Ctrl+Shift+A这3个组合键,同时用手指按在指纹采集处(长于5s)录入指纹,发现3个控制灯会闪两下,说明指纹录入成功。这时发现按键可以正常工作,表明指纹识别器达到了预设的目的。

借助QT开发的界面测试工具KeyTest测试按键是否可以正常工作,若正常,对应的按键会在按下时出现闪动。测试结果表明,所有的按键都可以正常工作。

KeyTest工具的界面如图5所示。

图5 KeyTest工具的界面

5 结束语

利用汇编语言借助LT_ICEV162工具为YSM246芯片编写固件程序,实现了指纹识别启动键盘,增强量化交易系统的安全性,并且为104键盘增加了可以由上层软件自定义功能的35个按键。通过利用QT开发的KeyTest工具对按键进行了性能测试,结果表明已实现预期的按键功能。

[1] 马蜂,左旭伟.基于Cortex-M0的USB密码键盘设计[J].单片机与嵌入式系统应用,2012(5):68-69.

[2] Sergio S M, Santos O C , Boticario J G .An evaluation of mouse and keyboard interaction indicators towards non-intrusive and low cost affective modeling in an educational context[J].Procedia Computer Science,2014,35(9):691-700.

[3] 薛圆圆, 赵建领. USB应用开发宝典[M]. 北 京:人民邮电出版社,2011:314-333.

[4] 吕文发, 蔡欣荣, 吕卫国.基于MCU和CPLD的HID类自定义键盘研究与实现[J].仪表技术,2010(7):67-71.

[5] 于帮伟,邓华秋,李春喜.Qt/Embedded应用程序中定制键盘的实现[J].电视技术,2011,35(21):77-79.

[6] USB Implementers’ Forum.ISO9541:2001,USB Device Class Definition for Human Interface Devices(HID)[S].[S.I.]:USB Implementer,2001.

[7] 陈媛媛, 付继华, 王中宇. 矩阵键盘与QT/Embedded 应用程序的通信[J]. 微计算机信息, 2008,24(10): 90-92.

[8] 中国标准化研究院.GB/T 2787-1981,信息处理交换用七位编码字符集键盘的字母数字区布局[S].北京:技术标准出版社,1982.

[9] 中国标准化研究院.GB/T 9310-1988, 加法器和计算器+键盘的数字区[S].北京:技术标准出版社,1988.

[10] 张连举. 基于FPGA的指纹识别系统的设计与实现[D].成都:西南交通大学, 2013: 66-68.

[责任编辑:祝剑]

Design of a fingerprint keyboard based on RSCI

Guo Jeff1,2, WANG Chao1, Chen Youwei1

(1.Shool of Computer Science and Technology, Xi’an University of Posts and Telecommunications, Xi’an 710121, China;2.School of Economics and Management,Xi’an University of Posts and Telecommunications, Xi’an 710121, China)

Ordinary 104 keyboards cannot meet the security requirement of quantitative trading market. An 18×8 matrix keyboard with the function of fingerprint security identification is proposed in this paper. By combining the USB/HID protocol with Reduced Instruction Set design pattern, a firmware program is written for YSM246 chip, and the visualization test of the key is carried out by using KeyTest tool. Test results show that the fingerprint safe unlocks can quickly and exactly identify input fingerprint, and that the 35 added buttons work well with high performance. Overall the goal of desired design is achieved.

matrix keyboard, fingerprint identification, USB/HID protocol, reduced instruction set

2014-06-24

工业和信息化部通信软科学研究计划资助项目(2012-R-08-2)

郭建峰(1972-),男,国家千人计划,硕士,教授,从事计算金融与风险管理研究。E-mail:goitsys@gmail.com 王超(1989-),女,硕士研究生,研究方向为计算机应用技术。E-mail:wwwch19@gmail.com

10.13682/j.issn.2095-6533.2015.01.013

TN919.6

A

2095-6533(2015)01-0064-06

猜你喜欢
组合键描述符指纹识别
基于结构信息的异源遥感图像局部特征描述符研究
在同一程序的不同窗口间快速切换
基于AKAZE的BOLD掩码描述符的匹配算法的研究
基于深度学习的局部描述符
复制带图片的工作表也有技巧
基于单片机指纹识别电子寄存柜设计
指纹识别技术综述
特征联合和旋转不变空间分割联合的局部图像描述符
指纹挂锁
基于大容量指纹识别的实时身份认证系统