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

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

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

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

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

?

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

?

?

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

采用自行研究設(shè)計(jì)的閱讀模塊,其主要技術(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位為一個(gè)字符,共45位,前面一個(gè)全0表示開始位,最后一個(gè)全1表示結(jié)束位,中間7個(gè)字符表示用戶的數(shù)據(jù),每一個(gè)字符由8421碼加一位檢驗(yàn)位構(gòu)成。針對(duì)上述數(shù)據(jù)結(jié)構(gòu),選用長(zhǎng)為63bit的BCH碼,經(jīng)編碼解碼后具有自動(dòng)糾正小于等于3位隨機(jī)錯(cuò)誤的能力。

1 BCH糾錯(cuò)碼編碼和解碼原理

1.1 BCH糾錯(cuò)碼的編碼原理

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

 

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

1.2 BCH糾錯(cuò)碼的解碼原理

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

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

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

???

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

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

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

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

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

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

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

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

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

?

?

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

  研制的考勤系統(tǒng)工作過(guò)程如圖3所示。單片機(jī)在整個(gè)過(guò)程中起著關(guān)鍵作用,由它來(lái)完成與讀寫模塊通訊?編碼?與PC機(jī)通訊及其它輔助任務(wù)。單片機(jī)的串行口與PC機(jī)的RS232串行口進(jìn)行通訊,由于卡號(hào)以及與卡相關(guān)的信息數(shù)據(jù)量,與圖像?語(yǔ)音信息相比要相差幾個(gè)數(shù)量級(jí),因此對(duì)數(shù)據(jù)傳輸速率的要求相對(duì)而言不高,一般情況下9600bps就能滿足要求。限于篇幅這里只給出單片機(jī)端的通訊程序(PLM51語(yǔ)言編寫)。

?

?

  /*------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;

  通過(guò)BSC信道傳輸?shù)臄?shù)據(jù),設(shè)信道的轉(zhuǎn)移概率為Pe,則在BSC信道中的誤碼率為pe。而使用BCH糾錯(cuò)碼后,其誤碼率可由下式?jīng)Q定[1]:

  

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

?

?

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

?

參考文獻(xiàn)

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

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

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

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

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

相關(guān)內(nèi)容