維根碼概述 ---維根碼(Wiegand)是一種數(shù)據(jù)傳輸協(xié)議,它是由美國安全工業(yè)協(xié)會SIA(Security Industry Association)規(guī)定的讀寫接口控制協(xié)議。在門禁、安防、考勤以及與之相關(guān)的其他行業(yè)中,維根碼作為一種讀卡設(shè)備與上位機(jī)之間的通信介質(zhì),其應(yīng)用領(lǐng)域非常廣泛。根據(jù)美國安全工業(yè)協(xié)會頒布的《以26位維根碼讀卡器為界面的門禁控制標(biāo)準(zhǔn)草案》,26位維根碼長度為26位,數(shù)據(jù)結(jié)構(gòu)見表1。 ---如表1所示,26位維根碼由8位設(shè)備的家族碼以及16位的設(shè)備ID號組成。從數(shù)學(xué)意義上說,8位家族碼只能容納256個設(shè)備種類編號(0~255)。而16位的設(shè)備ID碼在同一個設(shè)備種類之下只能容納65536個不同的設(shè)備號(0~65535)。由于26位維根碼本身的這種容量限制,在數(shù)據(jù)處理過程中可能會出現(xiàn)編碼的重復(fù)。 ---正是基于以上這種原因,在26位維根碼的基礎(chǔ)上,又建立了錐形維根碼格式(Pyramid Wiegand Format)以及自定義的維根碼格式(Custom Wiegand Format)等擴(kuò)展的維根碼格式。這些維根碼格式的具體定義如表2和表3所示。 ---維根碼數(shù)據(jù)輸出由兩條數(shù)據(jù)線構(gòu)成,分別是Data 0和Data 1線。圖1給出了《以26位維根碼讀取設(shè)備為界面的門禁控制標(biāo)準(zhǔn)草案》所規(guī)定的傳輸數(shù)據(jù)0和1的時序。如圖1所示,Data 0和Data 1線在發(fā)送數(shù)據(jù)之前都被置為邏輯高電平(高于Voh)。在這兩條數(shù)據(jù)線出現(xiàn)不同步的低電平的時候,讀取設(shè)備(通常為單片機(jī))會分別向上位機(jī)傳送數(shù)據(jù)0和1。 ---數(shù)據(jù)線Data 0和Data 1上的脈沖不能重疊或是同步。圖中Tpw是脈沖寬度時間(≤100μs),Tpi是脈沖間隔時間(≥1ms)。 ---作為一種數(shù)據(jù)傳輸格式,維根碼具有廣闊的應(yīng)用前景。依據(jù)維根碼格式輸出的信息可以應(yīng)用于身份識別、設(shè)備管理等多種領(lǐng)域。  以維根碼格式輸出信息鈕序列號 ---維根碼格式在射頻卡領(lǐng)域有廣泛的應(yīng)用。將對射頻卡或和TM卡序列號的讀取制成特定的模塊,既能簡化系統(tǒng)設(shè)計,又能保證讀取序列號的正確性,提高了身份識別系統(tǒng)的通用性和可移植性。 ---目前在采用射頻卡方式工作的門禁控制中,卡號多以維根碼數(shù)據(jù)形式輸出到控制器部分。為了不改變原有門禁控制系統(tǒng)的基本結(jié)構(gòu),設(shè)計了一種采用維根碼格式輸出TM卡序列號的方法。 ---Dallas公司生產(chǎn)的信息鈕(I-Button)是一種單總線器件,包括ID碼信息鈕DS1990、密碼信息鈕DS1991、溫度信息鈕DS1920、時鐘信息鈕DS1994等器件。這些器件都采用Φ16mm的不銹鋼封裝,無暴露的易損部件或易腐部件。數(shù)據(jù)傳輸時采用單總線協(xié)議,即和外部連接時只需要一根數(shù)據(jù)線和一根地線。每一個信息鈕都有一個64位長的注冊碼,包括8位家族碼、48位序列號和8位CRC校驗碼。其中48位序列號是每個信息鈕所獨(dú)有的,通過讀取8位家族碼可以對不同的信息鈕加以區(qū)分。其獨(dú)特的機(jī)械外形設(shè)計和設(shè)計理念,使其抗撞擊、防水漬、耐腐蝕、抗磁擾、防折疊,存儲于其中的數(shù)據(jù)信息具有相當(dāng)高的安全可靠性,而且便于隨身攜帶。 ---如前所述,Dallas信息鈕的序列號有48位,根據(jù)這一特點(diǎn),采用擴(kuò)展的50位維根碼輸出序列號,具體定義表4所示。  硬件設(shè)計 ---采用PIC系列的16X711單片機(jī)實(shí)現(xiàn)維根碼的輸出,工作電壓為2.5~5.5V,一般情況下的工作電流小于1μA,只在讀信息鈕瞬間電流增大,非常適合在要求低功率的系統(tǒng)中使用。具體工作過程如下。 ---(1)當(dāng)信息鈕與信息鈕讀卡頭相接觸時,單片機(jī)的INT0端有電平變化,產(chǎn)生中斷,把單片機(jī)從睡眠狀態(tài)中喚醒過來。 ---(2)單片機(jī)執(zhí)行讀序列號程序,讀卡過程操作時序通過PORTA端口的RA1端控制。若讀卡中序列號正確,蜂鳴器發(fā)出提示,同時信息鈕序列號以50位維根碼數(shù)據(jù)格式由DATA0和DATA1數(shù)據(jù)線輸出。 ---(3)輸出信息鈕序列號結(jié)束后,整個電路重新進(jìn)入睡眠狀態(tài)。 ---硬件電路如圖2所示。圖中1_WIRE表示連接信息鈕讀卡頭的地方,即信息鈕的1_wire數(shù)據(jù)端同時連接到PIC單片機(jī)INT0中斷端和PORTA端口的RA1端;DATA0是維根碼的“0”數(shù)據(jù)線,DATA1是維根碼的“1”數(shù)據(jù)線;B1是蜂鳴器。  軟件實(shí)現(xiàn) ---以維根碼格式輸出Dallas信息鈕的序列號的軟件流程圖見圖3。 計算校驗碼程序如下。 EVEN EQU 30H ODD EQU 31H ZH1 EQU 2BH NUMB EQU 2CH WIEGAND: CLRF EVEN CLRF ODD MOVLW 3 MOVWF NUMB MOVLW 46H MOVWF FSR ;計算bit2-25的偶校驗,并儲存在EVEN中 EVEN7: MOVF 0,W MOVWF 39H BTFSS 39H, 7 GOTO EVEN6 INCF EVEN EVEN6: BTFSS 39H, 6 GOTO EVEN5 INCF EVEN EVEN5: BTFSS 39H, 5 GOTO EVEN4 INCF EVEN EVEN4: BTFSS 39H,4 GOTO EVEN3 INCF EVEN EVEN3: BTFSS 39H, 3 GOTO EVEN2 INCF EVEN EVEN2: BTFSS 39H, 2 GOTO EVEN1 INCF EVEN EVEN1: BTFSS 39H,1 GOTO EVEN0 INCF EVEN EVEN0: BTFSS 39H,0 GOTO EVEN8 INCF EVEN EVEN8: DECF FSR DECFSZ NUMB GOTO EVEN7 ;計算26~49位的奇校驗與前面程序類似 ... RETURN 結(jié)束語 ---本文具體講述了維根碼的數(shù)據(jù)傳輸過程以及時序。在此基礎(chǔ)上,針對Dallas信息鈕序列號的特點(diǎn),提出了一種50位的擴(kuò)展型維根碼格式,并給出了相應(yīng)的硬件電路以及軟件程序。以維根碼格式輸出Dallas信息鈕的序列號保證了序列號傳輸?shù)臏?zhǔn)確性,為進(jìn)一步處理序列號提供了基礎(chǔ)。 參考文獻(xiàn) 1 Dallas Semiconductor Corporation. http://www.dalsemi.com 2 Microchip pic16c7xx data sheet. http://www.microchip.com 3 Halevi, S. Krawczyk, H., Public key cryptography and password protocols[J].Proceedings of 5th ACM Conference on Computer and Communications Security, 1998 4 2 Botting, J.Security on the Internet: Authenticating the User[J]. Telecommunications, 1997 |