一种高性能的考勤IC卡系统
2008-12-26
作者:柯 炜 殷奎喜
摘 要: 介绍一种带有BCH纠错码" title="纠错码">纠错码技术的考勤IC卡系统,在传输过程中加入BCH码,使之具有自动纠错功能,以提高系统的抗干扰能力。同时介绍了一种BCH码的新型解码方法,以提高运算速度。
关键词: BCH码 射频IC 考勤机" title="考勤机">考勤机系统
射频IC卡即非接触式IC卡,是最近几年发展起来的一项新技术,它将射频识别技术和IC卡技术结合起来,解决了无源(卡中无电源)和免接触的技术问题,具有使用方便?寿命长等优点,在日常生活中得到了广泛应用。射频IC卡的基本原理是通过无线电波或电磁感应的方式使卡中集成电路内的数据与外部接口设备进行通信,从而避免了接触式IC卡芯片磁头易损坏的问题,使IC卡应用范围越来越广。在许多单位中使用的考勤机(其结构框图如图1所示)系统就是IC卡应用的一个例子。每名职工都持有一张身份卡(IC卡),每天在考勤机上刷卡,从而把出勤次数和上班时间记录下来,再通过多机通信把数据传送" title="数据传送">数据传送到上位管理机(PC机),由上位管理机进行数据库管理。
为了满足需要,考勤机与上位管理机之间的通信距离被要求越来越长(如1000m以上),但随着距离的增大,受到的干扰越来越多,出错率提高。以我系开发研制的考勤机系统为例,为了抗干扰,系统采取了提高电平的方法,但增加了成本,增大了硬件复杂度。为了进一步提高性能,借鉴通信中的BCH码纠错技术,利用它对BSC信道[1]中发生的任意n位随机错误进行纠正。
采用自行研究设计的阅读模块,其主要技术指标是:发射频率12.5MHz;电源为DC+5V/90mA;读卡距离100mm以上。传送的数据结构" title="数据结构">数据结构如下:
每5位为一个字符,共45位,前面一个全0表示开始位,最后一个全1表示结束位,中间7个字符表示用户的数据,每一个字符由8421码加一位检验位构成。针对上述数据结构,选用长为63bit的BCH码,经编码解码后具有自动纠正小于等于3位随机错误的能力。
1 BCH纠错码编码和解码原理
1.1 BCH纠错码的编码原理
二进制循环码生成多项式含有如下2t=d-1个连续根[1]:
其中α是GF(2m)域中元素,mi(x)是αi最小多项式。LCM表示取最小公倍数,生成矩阵用G表示,将信息数据构成的向量与G相乘就可以得到相应BCH码。根据码的结构可分成系统码和非系统码[1]。
1.2 BCH纠错码的解码原理
要检测出错误位置和错误值,必须解上式所确定的非线性方程组,直接求解很困难。为此许多译码方法都引入中间变量来进行计算。著名的有Peterson方法?Berlekamp-Massey方法和Chien Search方法等[4]。这几种方法对BCH码进行复号,计算相当复杂,运算量极大。
针对现有复号方法的不足之处,本文介绍一种群变换的新型算法[2]进行解码。在伽罗瓦有限域中,对BCH码生成行列和检验行列进行有限变换(群变换通常指行?列向量变换,镜像变换,旋转变换等),将生成行列和检验行列变换成既约台形(reduced echelon form)形式的行列。
以(7,4)BCH码为例,其一般的校验矩阵为:
其中hi(i=1,2……,7)为中的列向量。一般情况下,矩阵可都表示成(h0h1h2ΛΛhn-1),对于这种形式的检验矩阵,由S=RT,可得S与中列向量的对应关系,进而可以确定出错误位置并进行纠正。原理如下:
(1)当S=0时,e0=e1=ΛΛ=en-1=0,即E=0,R=C,说明此时未发生错误;
(2)当S≠0时,则说明e0?e1ΛΛen-1不全为0,此时有错误发生。根据伴随值S与中列向量线性相关,可得以下结论:
当发生一位错误时,则有ei=1,el=0(l=1,2……n-1,l≠i),于是S向量必与矩阵第i列向量相等,利用这一关系可知第i位即为R向量中出错位置。
当发生二位错误时,则有ei=1,ej=1,el=0(l=1,2……n-1,l≠i,j),于是S向量等于矩阵中第i,j列向量之和,且这两列的取法是唯一的。利用这一关系可知第i位和第j位即为R中出错位置。
依此类推,根据S向量与中列向量的对应关系,只要满足纠错能力,BCH码就可纠正R中多个错误。因为是二进制码,找到错误位置后,随即就可以纠正。用这种方法进行译码,用加法运算代替了乘法运算,并且运算程序大为简化,因此具有较高的运算效率和速度。
2 软件实现方法
考虑到信息数据C已知,根据BCH系统码的特点,只要让C与编码矩阵G=[I45×45 M P45×18]中的P阵作用得到冗余位,再与C相连即可得到BCH码,整个过程较简单,运算量不大,把编码任务交给读写器中的微处理器来完成。我系开发研制的考勤机中采用的是Winbond公司的W78E58单片机,最高频率可达40MHz,完全可以胜任这一工作。
解码过程相对编码而言运算量较大,但解码是由上位机(PC机)来完成的,用上文介绍的解码方法编程方便?简单。由于采用BCH系统码,因此纠正错误后只要将后18位去掉即可得到原数据。程序流程见图2。
3 系统工作过程
研制的考勤系统工作过程如图3所示。单片机在整个过程中起着关键作用,由它来完成与读写模块通讯?编码?与PC机通讯及其它辅助任务。单片机的串行口与PC机的RS232串行口进行通讯,由于卡号以及与卡相关的信息数据量,与图像?语音信息相比要相差几个数量级,因此对数据传输速率的要求相对而言不高,一般情况下9600bps就能满足要求。限于篇幅这里只给出单片机端的通讯程序(PLM51语言编写)。
/*------transmit the data to pc-------*/
transmit:procedure(yy);
ea=0;
declare yy byte;
sbuf=yy;
do while ti=0;end;
ti=0; ea=1;
end transmit;
/*-------communication programe-------*/
communicate:
sm0=0;sm1=1;sm2=0;ren=1;ri=0;
tmod=00100000b;tl1=0fdh;tr1=1;
ea=1;es=1;
led=0;ring=0;
jh=10;
com_bit=0;
do while 1;
if com_bit=1 then
do i=0 to 9;
led=not led;
call tramsmit(cardnum(i));
call delay(10);
end;
else
do
led=0;
call delay(10);
end;
end;
end com;
通过BSC信道传输的数据,设信道的转移概率为Pe,则在BSC信道中的误码率为pe。而使用BCH纠错码后,其误码率可由下式决定[1]:
为了说明BCH码纠错器件对系统的影响,对本系统使用BCH码前后的不同干扰情况[1]下的误码率进行了比较,如表1所示。
由此可见,加入BCH纠错码技术后,数据传送的误码率大大降低。以我系开发研制的考勤IC卡系统为例,原来可靠传输距离为400m,最大使用距离不超过600米,在加入BCH纠错码后可保证1000m的通讯距离。整个系统的抗干扰能力明显地提高,从而提高了整个系统的可靠性。
参考文献
1 王新梅.计算机中的纠错码技术.北京:人民邮电出版社,1999
2 殷奎喜,谭锡林.群变换方法构成的BCH符号编码?解码多重纠错器件.国家发明专利,公开号:CN1247355A,公开日:2000年3月15日
3 王爱英.智能卡技术—IC卡.北京:清华大学出版社,2000
4 刘富全.纠错编码技术" title="编码技术">编码技术及应用.哈尔滨:哈尔滨船舶工程学院出版社,1993