智能安全键盘软硬件完整方案
不同。关于反向传播算法的基本情况大致如此。
将Wi初始化为小的随机值。
使误差小到适当的程度要遵循的步骤如下:
第1步:输入学习向量;
第2步:计算隐藏节点的输出;
第3步:在第2步的基础上计算输出节点的输出;
第4步:计算第3步所得的结果和期望值之间的差;
第5步:把第4步的结果填入学习规则的第1部分;
第6步:对于每个隐藏节点n,计算d(n);
第7步:把第6步的结果填入学习规则的第2部分。
通常把第1步到第3步称为正向传播,把第4步到第7步称为反向传播。
至此,我们已经成功地通过神经网络算法对用户需要分类的术语示例进行了正向学习,对用户需要验证的数据进行了识别,并且对经过验证的数据进行了反向传播学习。
(二)实现原理
使用Xilinx Spartan 3E Starter-kit的开发板开发应用程序的过程大致分为两部分——硬件和软件。
⒈硬件部分。借助Xilinx Platform Studio 9.1i with SP2(一下简称为XPS)良好的界面和易用性,我们借助其自带的IP核实现大部分开发板上设备的驱动,但是由于我们的项目要用到PS/2键盘、A/D转换器以及CC2420射频板等相应的IP核并没有附带在XPS中的设备,因此我们正在完成这些设备的IP核的设计,以便搭起我们所需要的硬件平台。
⒉软件部分。通过XPS中附带的Xilinx Platform Studio SDK(以下简称为XPSSDK)组件,我们使用C语言完成我们的项目的核心部分的设计。XPSSDK的外壳实际上使用的是开源软件Eclipse,其友好的界面可以极大方便我们的项目的开发。软件核心部分分为信号处理模块和密码处理模块。其中,信号处理模块采用神经网络算法,密码处理模块采用混沌算法。
⑴信号处理模块
信号采集部分主要采集三个系数:按键时间长短、按键时间间隔和力感模拟信号。其中前两个系数可以通过按键产生的通码和断码得到(每个通码和下一个断码之间构成一个按键时间长短,每个断码与下一个通码之间构成一个按键时间间隔),力感模拟信号可以通过绑定在每个按键下面的力度传感器采集到。
若用TH(i)表示第i个键按下的持续时间(Hold-time,即按键时间长短),则TH(i)=Trelease(i) -Tpress(i),Tpress(i)表示第i个键的按下时刻,Trelease(i)表示第i个键抬起的时刻。令TL(i,i+1)表示连续敲击第i个键和第i+1个键的时间间隔。则TL(i,i+1)=Tpress(i+1) -Trelease(i)。对于我们采集到的力感系数,每按键一次产生一个相关力度模拟信号,经Spartan 3E开发板上的A/D转换器将其转化为数字信号,得到相应的力感值TM(i)。若用户口令由n个字符组成,则最后我们得到一个3n-1维的信号采集特征向量[TH(1), TM(1),TL(1,2),TH(2), TM(2),TL(2,3),TH(3), TM(3),……,TL(n-1,n),TH(n) , TM(n)]。
然后我们将这些特征向量作为BP神经网络的输入层神经元,使用BP算法通过一边向后传播误差,一边修正误差的方法来不断调节网络参数(权值或阈值),以实现或逼近所希望的输入输出映射关系,最后得以对合法用户的身份进行辨别。
BP算法的学习过程如下:
①正向传播:输入信息从输入层经隐含层逐层处理,并传向输出层,每层神经元的状态只影响下一层神经元的状态(如下图所示)。
②反向传播:如果在输出层不能得到期望的输出,则转入反向传播,将误差信号沿原来的连接通路返回,通过修改各层神经元的权值,使误差信号最小。
BP算法的主要步骤如下:
①置所有权值为较小的随机数;
②提供训练集,给定输入向量X=(x1,x2,……,xm)和期望的目标输出向量D=(d1,d2,……,dn);
③前向计算,计算实际输出,计算隐含层,输出层各神经元的输出:
④对输出层计算δ:
⑤从后向前计算各隐层δ:
⑥计算并保存各权值修正量:
⑦修正权值:
⑧判断是否收敛,如果收敛则结束,不收敛则转至(3)重复计算,直到误差Ep满足要求。
本系统实现设计的BP网络考虑到用户的口令长度通常为8~16个,对应生成的特征的维数为23-47维,因此网络的输入节点数定为20~50,可依据口令长度选择。隐含层节点数需要在实现过程中不断模拟训练进行确定,以使判别效果达到最佳。
⑵密码处理模块
设混沌序列为
考虑到这四个值在PS/2总线上传输带来的安全性的问题,我们决定让其在密码处理模块和PC机端分别生成,生成函数如下:
(三)硬件框图
在硬件框图中,键盘信号包括按键时间长短、按键时间间隔和密码明文三个信号,该信号通过RS232总线传送至FPGA。由于FPGA的ADC对电压的范围有要求,压力信号先通过AMP进行放大处理后,再通过ADC转换成数字信号
- 基于WinCE操作系统的通用USB数控键盘设计(08-05)
- 基于嵌入式 Linux的键盘驱动设计(12-01)
- 基于ADSP-BF561的嵌入式键盘设计(05-08)
- 基于Linux和QT/E的软键盘设计(05-18)
- 使用MAX II CPLD 作为模拟键盘编码器(06-06)
- CPLD在无功补偿控制仪键盘中的设计应用(06-05)