《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信与网络 > 业界动态 > 一种高性能的考勤IC卡系统

一种高性能的考勤IC卡系统

2008-12-26
作者:柯 炜  殷奎喜

  摘? 要: 介紹一種帶有BCH糾錯碼" title="糾錯碼">糾錯碼技術(shù)的考勤IC卡系統(tǒng),在傳輸過程中加入BCH碼,使之具有自動糾錯功能,以提高系統(tǒng)的抗干擾能力。同時介紹了一種BCH碼的新型解碼方法,以提高運算速度。

  關(guān)鍵詞: BCH碼?? 射頻IC? 考勤機" title="考勤機">考勤機系統(tǒng)

?

  射頻IC卡即非接觸式IC卡,是最近幾年發(fā)展起來的一項新技術(shù),它將射頻識別技術(shù)和IC卡技術(shù)結(jié)合起來,解決了無源(卡中無電源)和免接觸的技術(shù)問題,具有使用方便?壽命長等優(yōu)點,在日常生活中得到了廣泛應(yīng)用。射頻IC卡的基本原理是通過無線電波或電磁感應(yīng)的方式使卡中集成電路內(nèi)的數(shù)據(jù)與外部接口設(shè)備進(jìn)行通信,從而避免了接觸式IC卡芯片磁頭易損壞的問題,使IC卡應(yīng)用范圍越來越廣。在許多單位中使用的考勤機(其結(jié)構(gòu)框圖如圖1所示)系統(tǒng)就是IC卡應(yīng)用的一個例子。每名職工都持有一張身份卡(IC卡),每天在考勤機上刷卡,從而把出勤次數(shù)和上班時間記錄下來,再通過多機通信把數(shù)據(jù)傳送" title="數(shù)據(jù)傳送">數(shù)據(jù)傳送到上位管理機(PC機),由上位管理機進(jìn)行數(shù)據(jù)庫管理。

?

?

  為了滿足需要,考勤機與上位管理機之間的通信距離被要求越來越長(如1000m以上),但隨著距離的增大,受到的干擾越來越多,出錯率提高。以我系開發(fā)研制的考勤機系統(tǒng)為例,為了抗干擾,系統(tǒng)采取了提高電平的方法,但增加了成本,增大了硬件復(fù)雜度。為了進(jìn)一步提高性能,借鑒通信中的BCH碼糾錯技術(shù),利用它對BSC信道[1]中發(fā)生的任意n位隨機錯誤進(jìn)行糾正。

采用自行研究設(shè)計的閱讀模塊,其主要技術(shù)指標(biāo)是:發(fā)射頻率12.5MHz;電源為DC+5V/90mA;讀卡距離100mm以上。傳送的數(shù)據(jù)結(jié)構(gòu)" title="數(shù)據(jù)結(jié)構(gòu)">數(shù)據(jù)結(jié)構(gòu)如下:

  每5位為一個字符,共45位,前面一個全0表示開始位,最后一個全1表示結(jié)束位,中間7個字符表示用戶的數(shù)據(jù),每一個字符由8421碼加一位檢驗位構(gòu)成。針對上述數(shù)據(jù)結(jié)構(gòu),選用長為63bit的BCH碼,經(jīng)編碼解碼后具有自動糾正小于等于3位隨機錯誤的能力。

1 BCH糾錯碼編碼和解碼原理

1.1 BCH糾錯碼的編碼原理

????二進(jìn)制循環(huán)碼生成多項式含有如下2t=d-1個連續(xù)根[1]

 

  其中α是GF(2m)域中元素,mi(x)是αi最小多項式。LCM表示取最小公倍數(shù),生成矩陣用G表示,將信息數(shù)據(jù)構(gòu)成的向量與G相乘就可以得到相應(yīng)BCH碼。根據(jù)碼的結(jié)構(gòu)可分成系統(tǒng)碼和非系統(tǒng)碼[1]。

1.2 BCH糾錯碼的解碼原理

要檢測出錯誤位置和錯誤值,必須解上式所確定的非線性方程組,直接求解很困難。為此許多譯碼方法都引入中間變量來進(jìn)行計算。著名的有Peterson方法?Berlekamp-Massey方法和Chien Search方法等[4]。這幾種方法對BCH碼進(jìn)行復(fù)號,計算相當(dāng)復(fù)雜,運算量極大。

??? 針對現(xiàn)有復(fù)號方法的不足之處,本文介紹一種群變換的新型算法[2]進(jìn)行解碼。在伽羅瓦有限域中,對BCH碼生成行列和檢驗行列進(jìn)行有限變換(群變換通常指行?列向量變換,鏡像變換,旋轉(zhuǎn)變換等),將生成行列和檢驗行列變換成既約臺形(reduced echelon form)形式的行列。

??? 以(7,4)BCH碼為例,其一般的校驗矩陣為:

???

  其中hi(i=1,2……,7)為中的列向量。一般情況下,矩陣可都表示成(h0h1h2ΛΛhn-1),對于這種形式的檢驗矩陣,由S=RT,可得S與中列向量的對應(yīng)關(guān)系,進(jìn)而可以確定出錯誤位置并進(jìn)行糾正。原理如下:

  (1)當(dāng)S=0時,e0=e1=ΛΛ=en-1=0,即E=0,R=C,說明此時未發(fā)生錯誤;

  (2)當(dāng)S≠0時,則說明e0?e1ΛΛen-1不全為0,此時有錯誤發(fā)生。根據(jù)伴隨值S與中列向量線性相關(guān),可得以下結(jié)論:

  當(dāng)發(fā)生一位錯誤時,則有ei=1,el=0(l=1,2……n-1,l≠i),于是S向量必與矩陣第i列向量相等,利用這一關(guān)系可知第i位即為R向量中出錯位置。

  當(dāng)發(fā)生二位錯誤時,則有ei=1,ej=1,el=0(l=1,2……n-1,l≠i,j),于是S向量等于矩陣中第i,j列向量之和,且這兩列的取法是唯一的。利用這一關(guān)系可知第i位和第j位即為R中出錯位置。

  依此類推,根據(jù)S向量與中列向量的對應(yīng)關(guān)系,只要滿足糾錯能力,BCH碼就可糾正R中多個錯誤。因為是二進(jìn)制碼,找到錯誤位置后,隨即就可以糾正。用這種方法進(jìn)行譯碼,用加法運算代替了乘法運算,并且運算程序大為簡化,因此具有較高的運算效率和速度。

2 軟件實現(xiàn)方法

  考慮到信息數(shù)據(jù)C已知,根據(jù)BCH系統(tǒng)碼的特點,只要讓C與編碼矩陣G=[I45×45 M P45×18]中的P陣作用得到冗余位,再與C相連即可得到BCH碼,整個過程較簡單,運算量不大,把編碼任務(wù)交給讀寫器中的微處理器來完成。我系開發(fā)研制的考勤機中采用的是Winbond公司的W78E58單片機,最高頻率可達(dá)40MHz,完全可以勝任這一工作。

  解碼過程相對編碼而言運算量較大,但解碼是由上位機(PC機)來完成的,用上文介紹的解碼方法編程方便?簡單。由于采用BCH系統(tǒng)碼,因此糾正錯誤后只要將后18位去掉即可得到原數(shù)據(jù)。程序流程見圖2。

?

?

3 系統(tǒng)工作過程

  研制的考勤系統(tǒng)工作過程如圖3所示。單片機在整個過程中起著關(guān)鍵作用,由它來完成與讀寫模塊通訊?編碼?與PC機通訊及其它輔助任務(wù)。單片機的串行口與PC機的RS232串行口進(jìn)行通訊,由于卡號以及與卡相關(guān)的信息數(shù)據(jù)量,與圖像?語音信息相比要相差幾個數(shù)量級,因此對數(shù)據(jù)傳輸速率的要求相對而言不高,一般情況下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信道傳輸?shù)臄?shù)據(jù),設(shè)信道的轉(zhuǎn)移概率為Pe,則在BSC信道中的誤碼率為pe。而使用BCH糾錯碼后,其誤碼率可由下式?jīng)Q定[1]:

  

  為了說明BCH碼糾錯器件對系統(tǒng)的影響,對本系統(tǒng)使用BCH碼前后的不同干擾情況[1]下的誤碼率進(jìn)行了比較,如表1所示。

?

?

  由此可見,加入BCH糾錯碼技術(shù)后,數(shù)據(jù)傳送的誤碼率大大降低。以我系開發(fā)研制的考勤IC卡系統(tǒng)為例,原來可靠傳輸距離為400m,最大使用距離不超過600米,在加入BCH糾錯碼后可保證1000m的通訊距離。整個系統(tǒng)的抗干擾能力明顯地提高,從而提高了整個系統(tǒng)的可靠性。

?

參考文獻(xiàn)

1 王新梅.計算機中的糾錯碼技術(shù).北京:人民郵電出版社,1999

2 殷奎喜,譚錫林.群變換方法構(gòu)成的BCH符號編碼?解碼多重糾錯器件.國家發(fā)明專利,公開號:CN1247355A,公開日:2000年3月15日

3 王愛英.智能卡技術(shù)—IC卡.北京:清華大學(xué)出版社,2000

4 劉富全.糾錯編碼技術(shù)" title="編碼技術(shù)">編碼技術(shù)及應(yīng)用.哈爾濱:哈爾濱船舶工程學(xué)院出版社,1993

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。