前 言
非接觸IC卡又稱射頻卡,是近幾年發(fā)展起來的一項新技術,同時也是射頻識別技術和IC卡技術有機結合的產物。非接觸IC卡與條碼卡、磁卡、接觸式IC卡比較,具有高安全性、高可靠性、使用方便快捷等特點??ㄅc讀寫器在相對運動的情況下也可完成操作,在讀寫器天線的可識別范圍之內,可能會同時出現多張卡片。如何完成每張可工作卡片的識別,并且進行正確的通信,這正是非接觸智能卡的防沖突技術要解決的問題。
2 TYPE B非接觸IC卡工作原理
非接觸式IC卡由包括電感線圈或小型高頻收發(fā)天線組成的射頻電路、能量轉換模塊與微處理器系統組成。射頻電路主要用來完成卡與讀寫設備的通信;能量轉換模塊用來從接收的射頻信號中產生卡片工作所需的時鐘信號和電源能量,其基本的工作原理是基于射頻識別技術RF ID, RF場的工作頻率為13. 56 MHz,讀寫器與卡之間采用異步半雙工方式進行通信,采用的是調幅的調制方式。在ISO1443 - 2國際標準中定義的TYPE B 通信協議規(guī)定,從讀寫器到卡的信號調制方式采用ASK 10%,編碼采用NRZ方式。從卡到讀寫器的信號調制方式采用BPSK,編碼采用BPSK曼徹斯特方式。TYPE B 采用的ASK 10%的調制方式信號無載波休止,因此更加穩(wěn)定,并且可以滿足將來高速通信的要求。
3 多張卡片同時出現在終端操作范圍內時防碰撞的實現方法
3. 1 防沖突過程的指令
TYPE B的防沖突是讀卡器對進入其讀寫范圍內的有效卡片按一定的順序進行有條不紊的操作。在這個過程中,讀卡器始終處于主動狀態(tài),通過一個命令集來管理與多張卡片的通信??ㄆ瑑炔康牟僮飨到y,能夠對讀卡器發(fā)出的這組命令集進行處理。當讀寫器在檢測到沖突發(fā)生時,讀寫器必須執(zhí)行相應的防沖突(Anticollision)過程,以識別出每一張工作卡片,并準備進入傳輸協議的更高層, 以進行后續(xù)的通信過程。ISO /IEC14443 - 3協議中TYPE B用于防沖突過程的指令如下:
REQB /WUPB:用于查詢天線工作區(qū)中的卡片,在指令中包含了AFI應用類標識符和時隙個數N 的信息,WUPB也可用于喚醒處于掛起狀態(tài)的卡片。
SLOTMARKER:用于對處于指令中所包含的時隙N 的卡片發(fā)出查詢命令。
ATQB:用于對卡片接收到的REQB /WUPB和SLOTMARKER指令進行響應。它除了給出應用數據和卡上支持的協議信息以外,還給出了在防沖突過程中用于區(qū)分卡片的4個字節(jié)的卡片唯一標識號PUP I。
ATTR IB:用于選擇指令中的PUP I所指定的卡片。同時也給出了讀寫器端的協議信息和用于多卡片通信環(huán)境下的唯一信道標識CID。ATB:卡片發(fā)出的對于ATTR IB指令的響應。
HLTB:用于將卡片置于HALT掛起狀態(tài),處于掛起狀態(tài)的卡片只對WUPB響應。
ATH:卡片發(fā)出的對于HLTB指令的響應。
3. 2 防沖突過程中的狀態(tài)
為了與讀卡器的命令相配合,卡片操作系統(COS)以狀態(tài)機的形式處理讀卡器發(fā)來的命令,為此,卡片內部定義了5種處理狀態(tài),即POWEROFF狀態(tài)、IDLE 狀態(tài)、READY狀態(tài)、ACTIVE 狀態(tài)和HALT狀態(tài)。
POWER OFF狀態(tài):由于沒有載波能量,卡片沒有能量。
IDLE狀態(tài): 卡片上電復位后,進入IDLE狀態(tài),這是卡片只對讀卡器發(fā)送的有效的并與卡片本身AF I匹配的REQB或WUPB命令進行處理。
READY狀態(tài):在這種狀態(tài)下卡片只處理有效的ATTR IB或者HLTB。
ACTIVE狀態(tài):在這種狀態(tài)下卡片可以接收高層命令并進行處理。
HALT狀態(tài):在這種狀態(tài)下只接受WUPB 命令。
圖1 防沖突過程實例圖
3. 3 防沖突過程
第一步:若有多張卡片進入RF場,當讀卡器檢測到沖突之后,發(fā)送多時隙帶AF I應用標識符的REQB或者WUPB命令,那些與AF I相匹配的卡片,產生一個內部隨機數R, R 的取值范圍在1~N 之間, R = 1的卡片即除在1時隙的卡片,回ATQB給讀卡器。若在1時隙內有多于一張卡片回復ATQB,則發(fā)生新的沖突,這些卡片無法在此次防沖突循環(huán)中被識別出來,等待下次的防沖突循環(huán);若僅有一張卡片且正確回復ATQB,則讀卡器可接著發(fā)出ATTR IB或者HALT命令;若發(fā)AT2TR IB命令,則選定此卡進入ACTIVE狀態(tài),此時卡片可接受高層命令并進行處理, REQB 及WUPB命令無效,直至卡片離開射頻場內;若發(fā)出HLTB命令,則卡片進入HALT狀態(tài),此時卡片只接受WUPB命令,直至卡片離開射頻場內。
第二步:讀卡器發(fā)SLOTMARKER命令,由小到大依次檢查2~N 這N - 1個時隙,選取卡片的原理和過程同第一步。
第三步:若一次防沖突循環(huán)之后,還有卡片未被識別出來,則繼續(xù)執(zhí)行步驟1和步驟2,直至所有卡片被識別出來。
防沖突循環(huán)允許在任何時間選擇一張或者多張卡進行進一步的高層通信。
3. 4 防沖突過程實例
實例如圖1所示。設同時有3張卡進入RF場中, 3張卡片的應用類型各不相同。首先讀卡器發(fā)單時隙REQB命令,卡片1和卡片3都回復了ATQB,讀卡器檢測到沖突后,改發(fā)4 時隙的REQB命令,卡片1 選擇了時隙2,這次不回復ATQB;卡片3選擇了1時隙,馬上回復ATQB;卡片2類型符不對,所以不做反應。然后讀卡器發(fā)時隙2的SLOTMARKER命令,卡片1回復AT2QB;卡片2類型不符,還是不做回復,卡片3時隙不符也不做回復。讀卡器接著發(fā)出時隙3和時隙4的SLOTMARKER命令,卡片1和3不在這2個時隙內,不做回復;卡片2 類型不對,也不做回復;此時卡片1和3等待著HLTB或者ATTR IB,所以這2個時隙內沒有回復。讀卡器接著發(fā)時隙3和時隙4的SLOTMARKER命令,卡片1和3不在這2個時隙內,不做回復;卡片2 類型不對,也不做回復;此時卡片1和3等待著HLTB或者ATTR IB,所以這2個時隙內沒有回復。
4 實 驗
讀卡器的設計采用P IC16F876單片機,以及符合ISO14443 - A和ISO14443 - B協議的PH IL2IP公司的MF RC531 ISO14443讀卡芯片。RC531可以讀TYPE A 和TYPE B 卡,能完成產生RF場、收發(fā)數據、檢查CRC等所有與IC卡對話所需的工作。它根據單片機發(fā)出的命令進行相應的操作, 在編程語言上采用C語言。
5 結 論
在絕大多數實際應用中,同一時間內RF場中一般都只會出現一張卡片(如考勤機) ,所以整個系統在默認的狀態(tài)下是不停地發(fā)送單時隙的讀卡命令。當檢測到有沖突時,考慮到RF場的作用范圍(10 cm)和實際應用情況,這時改發(fā)4時隙的讀卡命令,執(zhí)行防沖突循環(huán)。這樣的設計方式既保證了絕大多數情況下讀卡器準確、迅速地識別卡片,又保證了沖突發(fā)生時對多張卡片的正確識別。另外由于軟件編寫采用的是C語言,因而代碼效率高,可移植性好。對于其他單片機控制RC531的設計可以不做大的修改加以應用。根據防沖突模型,在PH IL IP公司的RC531非接觸式IC卡芯片上實現了防沖突協議,實際應用證明系統運行高效、正確。