TYPE B非接触式IC卡防冲突原理的研究与实现
文章出处:http://www.nexussmartsolutions.com 作者:朱灿 , 梁楚樵 人气: 发表时间:2011年09月29日
1 前 言
非接触IC卡又称射频卡,是近几年发展起来的一项新技术,同时也是射频识别技术和IC卡技术有机结合的产物。非接触IC卡与条码卡、磁卡、接触式IC卡比较,具有高安全性、高可靠性、使用方便快捷等特点。卡与读写器在相对运动的情况下也可完成操作,在读写器天线的可识别范围之内,可能会同时出现多张卡片。如何完成每张可工作卡片的识别,并且进行正确的通信,这正是非接触智能卡的防冲突技术要解决的问题。
2 TYPE B非接触IC卡工作原理
非接触式IC卡由包括电感线圈或小型高频收发天线组成的射频电路、能量转换模块与微处理器系统组成。射频电路主要用来完成卡与读写设备的通信;能量转换模块用来从接收的射频信号中产生卡片工作所需的时钟信号和电源能量,其基本的工作原理是基于射频识别技术RF ID, RF场的工作频率为13. 56 MHz,读写器与卡之间采用异步半双工方式进行通信,采用的是调幅的调制方式。在ISO1443 - 2国际标准中定义的TYPE B 通信协议规定,从读写器到卡的信号调制方式采用ASK 10%,编码采用NRZ方式。从卡到读写器的信号调制方式采用BPSK,编码采用BPSK曼彻斯特方式。TYPE B 采用的ASK 10%的调制方式信号无载波休止,因此更加稳定,并且可以满足将来高速通信的要求。
3 多张卡片同时出现在终端操作范围内时防碰撞的实现方法
3. 1 防冲突过程的指令
TYPE B的防冲突是读卡器对进入其读写范围内的有效卡片按一定的顺序进行有条不紊的操作。在这个过程中,读卡器始终处于主动状态,通过一个命令集来管理与多张卡片的通信。卡片内部的操作系统,能够对读卡器发出的这组命令集进行处理。当读写器在检测到冲突发生时,读写器必须执行相应的防冲突(Anticollision)过程,以识别出每一张工作卡片,并准备进入传输协议的更高层, 以进行后续的通信过程。ISO /IEC14443 - 3协议中TYPE B用于防冲突过程的指令如下:
REQB /WUPB:用于查询天线工作区中的卡片,在指令中包含了AFI应用类标识符和时隙个数N 的信息,WUPB也可用于唤醒处于挂起状态的卡片。
SLOTMARKER:用于对处于指令中所包含的时隙N 的卡片发出查询命令。
ATQB:用于对卡片接收到的REQB /WUPB和SLOTMARKER指令进行响应。它除了给出应用数据和卡上支持的协议信息以外,还给出了在防冲突过程中用于区分卡片的4个字节的卡片唯一标识号PUP I。
ATTR IB:用于选择指令中的PUP I所指定的卡片。同时也给出了读写器端的协议信息和用于多卡片通信环境下的唯一信道标识CID。ATB:卡片发出的对于ATTR IB指令的响应。
HLTB:用于将卡片置于HALT挂起状态,处于挂起状态的卡片只对WUPB响应。
ATH:卡片发出的对于HLTB指令的响应。
3. 2 防冲突过程中的状态
为了与读卡器的命令相配合,卡片操作系统(COS)以状态机的形式处理读卡器发来的命令,为此,卡片内部定义了5种处理状态,即POWEROFF状态、IDLE 状态、READY状态、ACTIVE 状态和HALT状态。
POWER OFF状态:由于没有载波能量,卡片没有能量。
IDLE状态: 卡片上电复位后,进入IDLE状态,这是卡片只对读卡器发送的有效的并与卡片本身AF I匹配的REQB或WUPB命令进行处理。
READY状态:在这种状态下卡片只处理有效的ATTR IB或者HLTB。
ACTIVE状态:在这种状态下卡片可以接收高层命令并进行处理。
HALT状态:在这种状态下只接受WUPB 命令。
图1 防冲突过程实例图
3. 3 防冲突过程
第一步:若有多张卡片进入RF场,当读卡器检测到冲突之后,发送多时隙带AF I应用标识符的REQB或者WUPB命令,那些与AF I相匹配的卡片,产生一个内部随机数R, R 的取值范围在1~N 之间, R = 1的卡片即除在1时隙的卡片,回ATQB给读卡器。若在1时隙内有多于一张卡片回复ATQB,则发生新的冲突,这些卡片无法在此次防冲突循环中被识别出来,等待下次的防冲突循环;若仅有一张卡片且正确回复ATQB,则读卡器可接着发出ATTR IB或者HALT命令;若发AT2TR IB命令,则选定此卡进入ACTIVE状态,此时卡片可接受高层命令并进行处理, REQB 及WUPB命令无效,直至卡片离开射频场内;若发出HLTB命令,则卡片进入HALT状态,此时卡片只接受WUPB命令,直至卡片离开射频场内。
第二步:读卡器发SLOTMARKER命令,由小到大依次检查2~N 这N - 1个时隙,选取卡片的原理和过程同第一步。
第三步:若一次防冲突循环之后,还有卡片未被识别出来,则继续执行步骤1和步骤2,直至所有卡片被识别出来。
防冲突循环允许在任何时间选择一张或者多张卡进行进一步的高层通信。
3. 4 防冲突过程实例
实例如图1所示。设同时有3张卡进入RF场中, 3张卡片的应用类型各不相同。首先读卡器发单时隙REQB命令,卡片1和卡片3都回复了ATQB,读卡器检测到冲突后,改发4 时隙的REQB命令,卡片1 选择了时隙2,这次不回复ATQB;卡片3选择了1时隙,马上回复ATQB;卡片2类型符不对,所以不做反应。然后读卡器发时隙2的SLOTMARKER命令,卡片1回复AT2QB;卡片2类型不符,还是不做回复,卡片3时隙不符也不做回复。读卡器接着发出时隙3和时隙4的SLOTMARKER命令,卡片1和3不在这2个时隙内,不做回复;卡片2 类型不对,也不做回复;此时卡片1和3等待着HLTB或者ATTR IB,所以这2个时隙内没有回复。读卡器接着发时隙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场、收发数据、检查CRC等所有与IC卡对话所需的工作。它根据单片机发出的命令进行相应的操作, 在编程语言上采用C语言。
5 结 论
在绝大多数实际应用中,同一时间内RF场中一般都只会出现一张卡片(如考勤机) ,所以整个系统在默认的状态下是不停地发送单时隙的读卡命令。当检测到有冲突时,考虑到RF场的作用范围(10 cm)和实际应用情况,这时改发4时隙的读卡命令,执行防冲突循环。这样的设计方式既保证了绝大多数情况下读卡器准确、迅速地识别卡片,又保证了冲突发生时对多张卡片的正确识别。另外由于软件编写采用的是C语言,因而代码效率高,可移植性好。对于其他单片机控制RC531的设计可以不做大的修改加以应用。根据防冲突模型,在PH IL IP公司的RC531非接触式IC卡芯片上实现了防冲突协议,实际应用证明系统运行高效、正确。
(文/武汉理工大学信息工程学院,朱 灿,梁楚樵)