一种基于二叉树形搜索的RFID防碰撞算法

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一种基于二叉树形搜索的RFID防碰撞算法

摘要:在RFID防碰撞算法中,平均时延是影响识别性能的关键因素。平均时延主要取决于识别每个标签所需的平均比特数。在二进制搜索防碰撞算法的基础上,提出了一种新的二叉树形搜索算法,该算法显著减少了识别标签的平均比特数,且当阅读器检索到树的底层时,可向二叉树的上层回溯,最终连续识别出所有的标签。对算法进行了仿真分析,证明该算法在性能上有明显提高。

关键词:平均时延;平均比特数;防碰撞算法;二叉树形搜索;

射频识别(RFID)

0 引言

射频识别(Radio Frequency Identification, RFID)的主要思想是通过射频信号自动识别目标对象并获取相关数据。RFID系统一般由电子标签( Tag)和阅读器(Reader)组成。阅读器负责发送广播并接收标签的标识信息;标签收到广播命令后将自身标识信息发送给阅读器。在数据传输的过程中从阅读器到标签的数据传输称作下传,从标签到阅读器的数据传输称作上传。

随着RFID的发展,其应用也越来越广泛,当阅读器识别区域内存在两个或者两个以上的标签在同一时刻向阅读器发送标识信息时,将产生碰撞问题。解决碰撞问题的方法主要有空分多址(SDMA)、时分多址(TDMA)、码分多址(CDMA)、频分多址(FDMA)四大类。而其中时分多址方法在RFID防碰撞问题上是普遍采用的,它在

复杂度和成本等方面都比其它3种方法更具优越性。目前存在的基于TDMA 的反碰撞算法主要有两种: 二进制搜索算法和ALOHA 算法。ALOHA 算法采用无规则的时分多址,或者叫随机多址。ALOHA 算法操作简便,成本低。但在应用中随着标签数量的扩大,性能将会急剧恶化。二进制搜索算法的电路实现要比ALOHA 算法复杂,但算法识别率较高。动态二进制搜索防碰撞算法以其简明的思想、稳定的系统性能和较少的系统资源需求在ISO/IEC14443A标准中被推荐为抗碰撞算法。本文提出一种二叉树形搜索防碰撞算法,在平均时延等性能上相比动态二进制搜索算法有明显改进,其分别通过识别每个标签所需传输的平均比特数来反映。验结果可以证明该算法是一种有效的防碰撞算法。

1 二进制搜索算法

1.1 二进制搜索防碰撞算法

二进制搜索算法由一个读写器和多个标签之间规定的一组命令和应答规则构成,目的在于从多卡中选出任一个实现数据通信。该算法关键在于选用适当的易于识别的基带编码(如曼彻斯特码(Mancherster)编码)、利用标签卡序列号唯一的特性和设计一组有效的指令规则,高效、迅速地实现选卡。

在二进制搜索算法的实现中,起决定作用的是读写器所使用的信号编码必须能够确定碰撞的准确比特位置。曼彻斯特码(Mancherster) 可在多卡同时响应时,译出错误码字,可以按位识别出碰撞。这样可以

根据碰撞的位置,按一定法则重新搜索标签。

图1 曼彻斯特码按位识别碰撞原理

二进制搜索法的实现需要每一个标签都拥有唯一的一个ID号,算法的工作流程是:

(1) 首先读写器发送一个与标签位数相同,数值全为1(即可

能出现的最大码)到标签,所有标签均发回它们的序列号。

(2) 对比标签返回的各序列号相同位置上的位值(0或者1),如果某一位上同时出现0和1,则译码将出现无法判断的位,即认为该位是碰撞的。

(3) 确定有碰撞后,把有不一致位的数从最高位到次低位依次置0 再输出序列号,即依次排除序列号大的数,至读写器对比标签响应的序列号的相同位数上的数完全一致时,说明无碰撞。这时就选出序列号最小的数。

(4) 选出序列号最小的数后,对该卡进行数据交换,然后使该卡进入“无声”状态,则在读写器范围也不再响应(移动该范围后移入可

再次响应)。

(5) 重复步骤(1),选出不是无声状态的标签中序列号最小的

标签进行数据交换。

(6) 多次循环后可完成所有标签的读取。

1.2 动态二进制搜索算法

考虑到RFID标签中的序列号长度标签的序列号可能很长,如

EPC 编码的3 个版本中的编码长度分别为64 位、96 位和256位,而UID(Ubiquitous Identifications) 编码长度128 位,随着今后的发展可能需要扩展到更长的长度。如此看来,若每次读写器发送的命令请求和标签的回复均以全部序列号进行,会造成传输的数据量太大,降低了防碰撞算法的效率。动态二进制搜索算法提出的主要思想在于减少在识别过程中传输的数据量,其每一次读写器发送和标签回复总共发送的位数是ID的总长度。这在一次收发中使传输的数据量相比基

本二进制搜索算法减少了50%。

下面介绍动态二进制搜索算法及其工作过程。设有M个标签,

每个标签中ID码的长度为N。

(1) 首先读写器发送一个完整的N位ID码,每个位上的码全为

1,让所有标签都发回响应。

(2) 读写器判断所有返回的标签序列号,并把最高的碰撞位X 找出并置0。然后传输N~X位的数据后即中断传输。标签接到这段数据与自己的标签从高到低比较,若相同则回传该标签ID的X-1~0,

可看出一次收发以最高碰撞位为界,传输数据量减少一半。

(3) 读写器检测返回的序列号,若无碰撞则直接跳入步骤(4);若仍有碰撞,检测出最高碰撞位X\-1并置其为0,把上次发送的N~X位前缀加上这一次的N\-1~X\-1位数据发送后中断传输。标签把收到的码与其自身的N~X\-1位比较,若相同则返回其X\-1~0位,不同则不响应。重复步骤(3)。

(4) 若无冲突位则可以通过发送READ-DATA命令读取数据,

并把该标签置“无声”状态,以后不再响应。

(5) 重复步骤(1),直到所有标签识别出来。

1.3 标签预处理算法

在RFID系统的实际应用中,标签的ID号中的碰撞位是不一定紧邻的,也就是说在两个相邻的碰撞位中,很可能存在着若干位不冲突的位值。显然这些位在防碰撞算法中是无关紧要的,所以如果在开始防碰撞算法前把所有标签中不冲突的位排除出去,之后不再传输这些位置上的数值,对ID号进行了压缩,这将减少防碰撞算法所需传

输的数据量,提高防碰撞算法的效率。

标签预处理算法的过程如下:

(1) 读写器发送查询信号

(2) 所有标签均发回它们的完整ID号。

(3) 读写器检测这些ID号中的碰撞位,产生一个与ID号同等长度的序列记录碰撞的位置,0代表该位无冲突,1则代表该位有冲突。

(4) 读写器发送产生的冲突位置序列到标签,标签中的存储器记录冲突的位置,之后标签的ID被压缩,只有冲突的位被保留在ID 中。

2 二叉树形搜索防碰撞算法

在动态二进制搜索防碰撞算法中,每一次读写器与标签之间的通信所传输的数据是以一个碰撞位为界,读写器发送ID的前缀部分,标签发送ID的后续部分。由于标签ID一般比较长,希望能更进一步减少

相关文档
最新文档