1、面向比特的防冲突机制
高频的ISO14443A使用这种防冲突机制,其原理是基于卡片有一个全球唯一的序列号。比如Mifare1卡,每张卡片有一个全球唯一的32位二进制序列号。显而易见,卡号的每一位上不是“1”就是“0”,而且由于是全世界唯一,所以任何两张卡片的序列号总有一位的值是不一样的,也就说总存在某一位,一张卡片上是“0”,而另一张卡片上是“1”。
当两张以上卡片同时进入射频场,读写器向射频场发出卡呼叫命令,问射频场中有没有卡片。这些卡片同时回答“有卡片”;
然后读写器发送防冲突命令“把你们的卡号告诉我”,收到命令后所有卡片同时回送自己的卡号。
可能这些卡片卡号的前几位都是一样的。比如前四位都是1010,第五位上有一张卡片是“0”而其他卡片是“1”,于是所有卡片在一起说自己的第五位卡号的时候,由于有卡片说“0”,有卡片说“1”,读写器听出来发生了冲突。
读写器检测到冲突后,对射频场中的卡片说,让卡号前四位是“1010”,第五位是“1”的卡片继续说自己的卡号,其他的卡片不要发言了。
结果第五位是“1”的卡片继续发言,可能第五位是“1”的卡片不止一张,于是在这些卡片回送卡号的过程中又发生了冲突,读写器仍然用上面的办法让冲突位是“1”的卡片继续发言,其他卡片禁止发言,最终经过多次的防冲突循环,当只剩下一张卡片的时候,就没有冲突了,最后胜出的卡片把自己完整的卡号回送给读写器,读写器发出卡选择命令,这张卡片就被选中了,而其他卡片只有等待下次卡呼叫时才能再次参与防冲突过程。
上述防冲突过程中,当冲突发生时,读写器总是选择冲突位为“1”的卡片胜出,当然也可以指定冲突位为“0”的卡片胜出。
上述过程有点拟人化了,实际情况下读写器是怎么知道发生冲突了呢?在前面的数据编码中我们已经提到,卡片向读写器发送命令使用副载波调制的曼侧斯特(Manchester)码,副载波调制码元的右半部分表示数据“0”,副载波调制码元的左半部分表示数据“1”,当发生冲突时,由于同时有卡片回送“0”和“1”,导致整个码元都有副载波调制,读写器收到这样的码元,就知道发生冲突了。
这种方法可以保证任何情况下都能选出一张卡片,即使把全世界同类型的所有卡片都拿来防冲突,最多经过32个防冲突循环就能选出一张卡片。缺点是由于卡序列号全世界唯一,而卡号的长度是固定的,所以某一类型的卡片的生产数量也是一定的,比如常见的Mifare1卡,由于只有4个字节的卡序列号,所以其生产数量最多为2的32次方,即4294967296张。
1、面向比特的防冲突机制
高频的ISO14443A使用这种防冲突机制,其原理是基于卡片有一个全球唯一的序列号。比如Mifare1卡,每张卡片有一个全球唯一的32位二进制序列号。显而易见,卡号的每一位上不是“1”就是“0”,而且由于是全世界唯一,所以任何两张卡片的序列号总有一位的值是不一样的,也就说总存在某一位,一张卡片上是“0”,而另一张卡片上是“1”。
当两张以上卡片同时进入射频场,读写器向射频场发出卡呼叫命令,问射频场中有没有卡片。这些卡片同时回答“有卡片”;
然后读写器发送防冲突命令“把你们的卡号告诉我”,收到命令后所有卡片同时回送自己的卡号。
可能这些卡片卡号的前几位都是一样的。比如前四位都是1010,第五位上有一张卡片是“0”而其他卡片是“1”,于是所有卡片在一起说自己的第五位卡号的时候,由于有卡片说“0”,有卡片说“1”,读写器听出来发生了冲突。
读写器检测到冲突后,对射频场中的卡片说,让卡号前四位是“1010”,第五位是“1”的卡片继续说自己的卡号,其他的卡片不要发言了。
结果第五位是“1”的卡片继续发言,可能第五位是“1”的卡片不止一张,于是在这些卡片回送卡号的过程中又发生了冲突,读写器仍然用上面的办法让冲突位是“1”的卡片继续发言,其他卡片禁止发言,最终经过多次的防冲突循环,当只剩下一张卡片的时候,就没有冲突了,最后胜出的卡片把自己完整的卡号回送给读写器,读写器发出卡选择命令,这张卡片就被选中了,而其他卡片只有等待下次卡呼叫时才能再次参与防冲突过程。
上述防冲突过程中,当冲突发生时,读写器总是选择冲突位为“1”的卡片胜出,当然也可以指定冲突位为“0”的卡片胜出。
上述过程有点拟人化了,实际情况下读写器是怎么知道发生冲突了呢?在前面的数据编码中我们已经提到,卡片向读写器发送命令使用副载波调制的曼侧斯特(Manchester)码,副载波调制码元的右半部分表示数据“0”,副载波调制码元的左半部分表示数据“1”,当发生冲突时,由于同时有卡片回送“0”和“1”,导致整个码元都有副载波调制,读写器收到这样的码元,就知道发生冲突了。
这种方法可以保证任何情况下都能选出一张卡片,即使把全世界同类型的所有卡片都拿来防冲突,最多经过32个防冲突循环就能选出一张卡片。缺点是由于卡序列号全世界唯一,而卡号的长度是固定的,所以某一类型的卡片的生产数量也是一定的,比如常见的Mifare1卡,由于只有4个字节的卡序列号,所以其生产数量最多为2的32次方,即4294967296张。
举报