博客防碰撞算法.docx
- 文档编号:26671137
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:17
- 大小:263.29KB
博客防碰撞算法.docx
《博客防碰撞算法.docx》由会员分享,可在线阅读,更多相关《博客防碰撞算法.docx(17页珍藏版)》请在冰豆网上搜索。
博客防碰撞算法
RFID防碰撞算法2012-02-0911:
40:
28
分类:
嵌入式
1.1防碰撞概述
RFID系统存在着两种不同的通信冲突形式。
第一种是标签冲突,是指多个标签同时响应读写器的命令而发送信息,引起信号冲突,使读写器无法识别标签。
第二种是读写器冲突,读写器冲突是指由一个读写器检测到由另一个读写器所引起的干扰信号。
这里主要对标签冲突进行陈述。
当读写器向工作场区内的一组标签发出查询指令时,两个或两个以上的标签同时响应读写器的查询,由于标签传输信息时选取的信道是一样的且没有MAC的控制机制;返回信息产生相互干扰,从而导致读写器不能正确识别其中任何一个标签的信息,降低了读写器的识别效率和识读速度,上述问题称为多标签碰撞问题。
随着标签数量的增加,发生多标签碰撞的概率也会增加,读写器的识别效率将进一步下降。
RFID系统必须采用一定的策略或算法来避免冲突现象的发生,将射频区域内多个标签分别识别出来的过程称为防冲突,或者防碰撞。
在RFID技术越来越普及的当代,很多应用场合都遭遇到碰撞问题,防碰撞技术已经成为RFID系统应用必须面临和解决的关键问题。
防碰撞问题主要解决的是如何快速和准确地从多个标签中选出一个与读写器进行数据交流,而其他的标签同样可以从接下来的防碰撞循环中选出与读写器通信。
1.1.1防碰撞研究现状
从技术方面来说,多标签防碰撞(Anti-collision)技术可以分为空分多路(SDMA)、时分多路(TDMA)、码分多路(CDMA)、频分多路(FDMA)这4种方法。
SDMA是在分离的空间范围内进行多个目标识别的技术,采用这种技术的系统一般是在一些特殊应用场合,例如这种方法在大型的马拉松活动中获得了成功。
FDMA是把若干个使用不同载波频率的传输通路同时供通信用户使用的技术,但读写器的成本高,因为每个接收通路必须有自己的单独接收器供使用,电子标签的差异更为麻烦。
CDMA是数字技术的分支—扩频通信技术发展起来的一种崭新的无线通信技术。
CDMA技术的原理是基于扩频技术,而用户具有特征码,即CDMA包含扩频(SS-SpreadSpectrum)与分码两个概念,缺点是频带利用率低、信道容量较小;地址码选择较难;接收时地址码的捕获时间较长。
其通信频带及其技术复杂性等很难在RFID系统中推广应用。
因此,对于射频识别系统来说,时分多路是最常见的技术。
1.1.2防碰撞发展趋势
根据时分多路的防碰撞技术及电子标签工作频段的不同,人们提出了不同的防碰撞算法。
总结为概率性防碰撞算法和确定性防碰撞算法两大类,其代表性算法分别为ALOHA法和二进制树形搜索法。
ISO/IECl4443协议定义了TYPEA、TYPEB两种类协议,分别推荐了基于二进制搜索思想和基于时隙ALOHA法两种不同的防碰撞算法。
而ISO/IECl5693协议采用的防碰撞方式是动态时隙ALOHA法,它借助电子标签的唯一序列号,实现对读写器天线磁场中的多个电子标签的查询。
ISO/IECl8000-6协议定义了TYPEA、TYPEB和TYPEC三种协议,也是分别采用的防碰撞方式是二进制搜索法和时隙ALOHA法。
之后有很多研究人员提出了基于这两种算法的改进算法。
基于时隙ALOHA的防碰撞算法在RFID技术中应用非常广泛,典型的如:
ISO/IECl8000-6C协议标准中采用的算法是基于ALOHA算法并且依照具体应用做了一定的改进,下面就以ISO/IECl8000-6的TYPEC中的时隙防碰撞理论为例作简要说明。
1.2ISO/IECl8000-6C协议的相关简介
在介绍ISO/IECl8000-6的TYPEC中的时隙防碰撞理论之前,有必要对ISO/IECl8000-6C协议(下文简称为:
6C协议)的相关概念及内容做介绍,以便对时隙防碰撞的理论原理有更好的理解。
目前RFID存在三个主要的技术标准体系:
总部设在美国麻省理工学院(MIT)的Auto-IDCenter(自动识别中心)、ISO标准体系以及日本的UbiquitousIDCenter(泛在ID中心,UIC)。
而EPCGlobal是美国统一代码协会(UCC)和欧洲物品编码协会(EAN)于2003年9月共同成立的非营利性组织,其前身就是1999年10月1日在美国麻省理工学院成立的非营利性组织Auto-IDCenter。
EPCGlobal针对电子产品编码(ElectronicProductCode)超高频(860~960MHz)射频识别系统制定了EPCGlobalGeneration2(简称Gen2)协议。
而ISO组织针对超高频射频识别应用制定了ISO18000-6系列标准。
2006年7月,Gen2空中接口协议被国际标准化组织接纳为ISO/IEC18000-6C标准(即6C协议的诞生),这意味着6C协议可在更广泛的范围内得以应用。
6C协议规定了在860MHz~960MHz的频率范围内操作的无源反向散射、读写器讲话优先(ITF)的射频识别系统要求。
下面就这些具体要求并结合防碰撞的内容作简要叙述。
1.2.1与防碰撞相关的术语及概念
R=>T(ReadertoTag):
读写器对标签。
T=>R(TagtoReader):
标签对读写器。
RNG(RandomNumberGenerator):
随机或伪随机数发生器。
RN16(RandomNumber16):
16位随机或伪随机数。
命令集:
用于读写器考察和修改标签的一套命令。
主要包括强制指令(包括Select,Query等)、任选指令、专利指令、定制指令等。
盘存周期:
连续发出的Query命令之间的时间。
Q:
读写器用以调节标签响应的可能性的参数。
在盘存周期中将Q-位随机(或伪随机)数载入其槽计数器的读写器命令标签。
读写器也可命令该标签使其槽计数器减值。
当槽计数器数值(槽)为零时,该标签做出回答。
Q为该范围内的整数,相当的标签响应可能性的范围是从2^0=1至2^15。
槽:
槽即标签可能响应的盘存周期内的某点。
槽为标签的slotcounter输出的数值。
当槽为零时(槽计数器中的数值),标签做出回答。
数据编码:
标签应将反射散射的数据编为该数据速率的副载波FM0基带或Miller调制。
读写器发出编码选择的命令。
FM0基带:
下图为生成FM0(两相空间)编码的基本功能和状态图。
FM0在每个边界倒转基带相位,数据-0有一个附加的中间符号相位倒转。
状态图描绘了所发送的FM0基本功能的逻辑数据序列。
S1-S4状态标记表明四种可能FM-编码符号,代表各FM0基本功能的两个相位。
这些状态标签还表示键入状态后即传输的FM0波形。
状态转换的标签表示被编码的数据序列的逻辑值
1.2.2与防碰撞相关内容
1.2.2.1与防碰撞有关的指令
6C协议标准含有的指令主要可以分为四种类型:
强制指令,任选指令,专利指令,定制指令。
而在读写器对标签进行操作的全部指令中与防碰撞有关的指令主要有:
Query、QueryRep、QueryAdjust、ACK、NAK这些指令均属于强制指令,也就是说只要是符合6C协议标准的标签和读写器都必须支持这些指令。
下面对每个上述指令进行解释:
Query:
开始并设定一个盘存的周期;设定T=>R的链路频率、数据速率和编码方式和调制模式等等。
使标签状态从就绪状态转换到仲裁状态。
QueryAdjust:
在一帧结束后,读写器对标签数目进行一个估计,然后以此估计将会得到合理的帧长度值,而QueryAdjust指令的功能就是把修改后的帧长度信息发送给标签。
QueryRep:
标签收到此指令后将使内部的计数器进行减1,如果结果为零的话,将被射RNl6给读写器,状态转到应答状态。
如果不为零的话,不反射信息给读写器,状态也维持不变。
ACK:
读写器发送ACK指令(包含参数RN16)对标签进行确认,如果RNl6正确,标签将回复EPC给读写器。
如果不对,标签将转换仲裁状态。
NAK:
读写器使用此命令将使不在就绪和杀死状态的全部标签回到仲裁状态,如果标签正好停在就绪和杀死的状态,那么标签将不响应NAK指令,维持在就绪或者杀死的状态。
1.2.2.2连接定时
如下图描绘了R=>T和T=>R的链路定时。
该图(未按比例绘制)规定了读写器(询问机)与标签群之间的相互通信过程。
下表显示了图中的定时要求,Tpri为T=>R的链路周期(Tpri=1/LF)。
读写器应在盘存周期期间采用固定的R=>T的链路速率,在改变R=>T链路速率之前,读写器应至少为8个RTcal传输连续波(CW)。
连接定时图
参数
最小值
典型值
最大值
描述
T1
MAX(RTcal,10Tpri)×(1-FT)-2µs
MAX(RTcal,10Tpri)
MAX(RTcal,10Tpri)×(1-FT)+2µs
从读写器发射到标签应答的时间(特别地,从询问发射的最后位的最后上升沿到标签应答的第一上升沿的时间),由标签天线终端处测得
T2
3.0Tpri
20.0Tpri
标签解调读写器信号所需的时间,由标签响应信号的最后位的下降沿到读写器发射第一个下降沿测得
T3
0.0Tpri
发送另一个命令之前在T1后的读写器等待时间
T4
2.0RTcal
读写器命令之间的最小时间
连接定时参数
注:
1.Tpri表示FM0符号的周期或单载波周期;RTcal表示读写器对标签的校准符号;LF表示链路频率(LF=1/Tpri)。
2.T2的最大值仅适用于在应答或确认状态下的标签。
对于在应答或确认状态下的标签,若T2结束(例如达到其最大值):
●标签没有收到有效命令,则该标签应转为仲裁状态。
●在接收有效命令期间,该标签应执行该命令。
●在接收无效命令期间,该标准应在确定该命令为无效命令后立即转为仲裁状态。
在其它状态下,T2的最大值不受限制。
3.读写器可以在间隔T2前(即在标签应答期间)传输新命令。
在这种情况下,不要求作出应答的标签解调或根据新命令作出响应,并可以加电复位。
1.2.2.3标签状态及转换图
所有满足6C协议标准的标签必须可以实现7个状态:
就绪状态、仲裁状态、应答状态、确认状态、开放状态、保护状态、灭活状态。
这7个状态中和防碰撞有关的四个状态分别是:
就绪状态、仲裁状态、应答状态、确认状态。
标签应执行如图所示的状态图。
标签状态图
注:
1.Select:
确认/取消确认SL或设置已盘标记到A或B。
2.Query:
若新通话与前通话匹配的话,则为A—>B或者B—>A,否则不改变已盘标记。
QueryRep/QueryAdjust:
若该通话事发前Query命令匹配的话,则为A—>B或者B—>A,否则该命令无效,标签忽略该命令。
3.Query启动新盘存周期,并可以改变通话;标签可以进入就绪状态、仲裁状态或应答状态
1.2.2.3.1就绪状态
标签应执行就绪状态。
就绪可以被视为通电标签被灭活或正参与某盘存周期的保持状态。
进入激励射频场后,未灭活的标签应进入就绪状态。
标签应保持其就绪状态直至收到其已盘参数(Query命令规定的通话的已盘参数)和sel参数(Query命令规定的通话参数表示选择与Query命令匹配的标签)与其当前标记值匹配的Query命令。
匹配标签应从其RNG中抽出Q位数,将该数字载入其槽计数器内,若该数字非零则转换到仲裁状态,若该数字为零则转换到应答状态。
若处于除被灭活之外任何状态的标签电源断电,则应在恢复电源后即返回就绪状态。
1.2.2.3.2仲裁状态
标签应执行仲裁状态。
仲裁可以被视为参与当前盘存周期但其槽计数器数值非零的标签的“保持状态”。
处于仲裁状态的标签每次收到其通话参数与当前盘存周期通话匹配的QueryRep命令后使其槽计数器减值,当槽计数器达到0000h时,应转换到应答状态。
以0000h的槽值转换到仲裁状态(例如从应答状态转换)的标签应使其槽计数器在下一个QueryRep(附匹配通话)时从0000h减值到7FFFh,由于其槽值此时非零,因此仍然处于仲裁状态。
1.2.2.3.3应答状态
标签应执行应答状态。
一旦进入应答状态,标签应反向散射RN16。
若标签收到有效确认(ACK),则转换到确认状态,反向散射其PC、EPC和CRC-16。
若标签未能接收到ACK,或收到无效ACK,则应返回仲裁状态。
标签和读写器应符合规定的所有定时要求。
1.2.2.3.4确认状态
标签应执行确认状态。
处于确认状态的标签可以转换到除灭活之外的任何状态,视所收到的具体命令而定。
标签和读写器应符合规定的所有定时要求。
1.2.2.3.5开放状态
标签应执行开放状态。
处于确认状态,其访问口令非零的标签应在收到Req_RN命令后即转换到开放状态,反向散射新的读写器应在随后的命令中使用的和标签在随后的应答中使用的RN16(标为句柄)。
处于开放状态的标签应执行除lock之外的所有命令。
处于开放状态的标签可以转换到除确认之外的任何状态,具体情况视所收到的命令而定。
标签和读写器应符合规定的除T2(max)之外的所有定时要求。
在开放状态下,标签应答和读写器传输之间的最大延迟不受限制。
1.2.2.3.6保护状态
标签应执行保护状态。
处于确认状态的,其访问口令为零的标签收到Req_RN命令后应立即转换成保护状态,反向散射新的读写器应在随后的命令中使用的和标签在随后的应答中使用的RN16(标为句柄)。
处于开放状态的其访问口令非零应在收到有效Access命令即转换到保护状态,保持原来从确认状态转换到开放状态时反向散射的句柄不变。
处于保护状态的标签可以执行所有访问命令。
处于保护状态的标签可以转换到除开放或确认之外的任何状态,具体情况视所收到的命令而定。
标签和读写器应符合规定的除T2(max)之外的所有定时要求。
在保护状态下,标签应答和读写器传输之间的最大延迟不受限制。
1.2.2.3.7灭活状态
标签应执行灭活状态。
处于开放状态或保护状态的标签应在收到kill命令后以有效非零灭活口令和有效句柄进入灭活状态。
进入灭活状态后,标签应通知读写器灭活操作成功,此后不再对读写器作出响应。
被灭活的标签应在所有情况下都处于灭活状态,并在随后的开启电源的操作中立即进入灭活状态。
灭活操作具有不可逆性。
在了解了相关指令和标签状态后,下面即将介绍读写器是如何进行管理标签群的,读写器运用什么指令如何进行标签识别,标签状态怎么样;这些问题的解答将在后面一一陈述。
1.2.2.4管理标签群
读写器采用下图所示的三个基本操作管理标签群。
每个操作均由一个或一个以上的命令组成。
这三个基本的定义如下:
a)选择:
读写器选择标签群以便于盘存和访问的过程。
读写器可以一个或一个以上的Select命令在盘存之前选择特定的标签群。
b)盘存:
读写器识别标签的过程。
读写器在四个通话的其中一个通话中传输Query命令,开始一个盘存周期。
一个或一个以上的标签可以应答。
读写器检查某个标签应答,请求该标签发出PC、EPC和CRC-16。
同时只在一个通话中进行一个盘存周期。
c)访问:
读写器与各标签交易(读取或写入标签)的过程。
访问前必须要对标签进行识别。
访问由多个命令组成,其中有些命令执行R=>T链的一次活页加密。
读写器指令标签状态
管理标签群
1.2.2.4单标签的读卡流程及状态图
由上述的标签状态图可以看出读写器如何与单标签进行通信,
流程图如下:
读写器指令与标签返回数据标签状态
单标签的读卡流程状态图
a)当读写器的射频场中只有一个单标签时,首先读写器上电复位,并发送强制指令SELECT指令,通过指令相应的匹配条件选择此标签;此时标签对此命令不会做出应答,标签即时转到就绪状态。
b)随后经过读写器命令之间的最小时间T4之后,读写器发送QUERY指令,标签在收到QUERY指令后,根据已盘标记和SL标记来确认是否响应,如果匹配条件满足且槽计数器值为非0,则即时进入仲裁状态,随后发送QUERY_REP指令使槽计数器减值,直至槽计数器为0标签转到应答状态;如果匹配条件满足且槽计数器值为0,则反向散射一个随机数RN16且立即转换到应答状态。
c)读写器接收到标签有效反向散射的RN16,读写器以相同的RN16为参数发送ACK(RN16)指令,若标签收到有效ACK指令;立刻转换到确认状态并反向散射其PC,EPC和CRC-16。
d)标签在确认状态下,执行读写器发送的REQ_RN(RN16)指令;则标签收到有效指令后反向散射一个新的RN16(句柄)并且转到其他状态(开放状态和保护状态),在此状态下;读写器可以单独对此标签进行读写处理。
1.2.2.5多标签的盘存流程
读写器对标签的盘存操作中设计的指令具体包括Query、QueryAdjust、QueryRep、ACK和NAK。
Query用来开始对选定标签的一个盘存周期,并且指定哪些标签群参与该盘存周期。
Query命令中包含有槽计数器的参数Q。
参与盘存的标签在收到Query指令后在(O,2^Q-1)范围内选择一个随机数,并把这个随机数装入标签内部的槽计数器中。
槽计数器选到零数值的标签应该瞬间转换成应答状态,并立即应答。
标签内部槽计数器选择的数值不是零的标签应该转换成仲裁状态,并且等待读写器发出QueryAdjust或者QueryRep命令。
那么读写器和标签的通信过程如下:
a)当标签内部的槽计数器减到0时,标签则转换到应答状态同时向读写器反向散射RN16。
b)读写器收到标签回复的正确的RNl6时,以RNl6为参数向标签发送ACK指令。
c)处于应答状态的标签收到RNl6正确的信号后,向读写器反向散射PC、EPC和CRC16,并且转换到确认状态。
d)读写器重新发送QueryAdjust或QueryRep命令,让刚识别的标签倒转其已盘标记,以便读写器对剩下的为被盘存标签进行盘存时,已盘的标签不用对盘存命令进行反应,起到了为系统节约资源的目的。
标签转换完标记后,转换到就绪状态。
此时应使另一个标签启动与该读写器从上述(a)开始的询问-问答的对话。
注意,由于在确认状态下读写器与标签之间通信的具体定时要求(如T2),且如果不满足定时要求就会造成标签已经发生了碰撞,但是还会继续参与防碰撞的结果。
故实际操作中需要把标签通过REQ_RN指令放置于开放状态或者是保护状态,因为这2种状态对定时没有要求,以便确保已盘存的标签不用再参与防碰撞,减少碰撞时间和出错率。
上述只是理论分析过程,具体到实际的标签盘存可能略有不同。
在b)步中,如果标签在时间T2内没有收到读写器发送的ACK,或者收到的读写器发送的ACK指令中的参数RNl6发生了错误,那么标签应该返回到仲裁状态。
如果在读写器阅读范围内存在多个标签,如果同时应答读写器超过两个,那么将产生碰撞。
倘若读写器通过波形检测可以对发生碰撞的某个标签的信号进行解决,那么将对可以被解决的标签先行盘存,未被未决的标签将会收到读写器发送的ACK指令中包含的错误的RNl6,将重新返回仲裁状态,同时向读写器反向散射它的PC、EPC和CRC16。
如果读写器向停留在确认状态下的标签发送ACK指令并且此指令含有正确的RNl6,那么此标签应该重新向读写器反向散射其PC、EPC和CRC-16。
读写器在任何情况都可以发送NAK,收到此指令后的所有标签将返回仲裁状态,而且已盘标记保持不变。
读写器采用Query指令开始一个盘存周期后,读写器一般情况下要对标签发出一个或多个的QueryAdjust和QueryRep指令。
QueryAdjust命令只是改变Q参数的值,让标签重新在一个帧长度内产生一个新的随机数,不改变读写器以前对标签设定的任何参数,也不将新的标签引入到盘存标签内。
而读写器发送的QueryRep指令也不对之前读写器在标签内设置的参数,也不将新的标签引入该盘存周期,只是使标签内部槽计数器的值减1。
当然盘存周期可以包含有限多个QueryAdjust或者QueryRep命令或者同时含有两种命令。
在任何一点上读写器可以发出新的Query命令,以此来开始新的盘存周期。
当处于仲裁或者应答状态的标签收到读写器发送的QueryAdjust命令时,标签首先调整Q值(增值、减值或保持不变),然后在该范围内(O,2^Q-1)挑选一个随机数值,将该数值载到标签内部的槽计数器内。
随机发生器选到零的标签应该转换到应答状态并立即向读写器反向散射RNl6。
随机发生器没有选到零的标签应该立即转换到仲裁状态,并一直等到收到读写器向标签发送QueryAdjust或QueryRep命令为止。
当处于仲裁状态下的标签收到QueryRep命令后,应该立即让内部的槽计数器进行减1,当槽计数器减到零时标签则把自己的状态转换到应答状态,并且向读写器反向散射随机数RNl6。
槽计数器达到0的,对读写器反射了RNl6的标签(包括响应原Query命令但未被确认的标签),如果没有收到确认指令,标签应该在槽计数器的值达到0时返回仲裁状态,并在读写器发送下一个QueryRep时使其槽值从0000h减值到7FFFh,这样就可以阻止标签过于频繁的应答,造成不必要的碰撞。
标签其实应该在2^Q-1个QueryRep命令中至少对读写器反射一次RN16。
在对6C协议的单标签读卡流程和多标签盘存流程有了一定的理解后,可以开始针对6C协议的防碰撞理论进行论述。
超高频读写器的架构分析2012-02-0911:
21:
52
分类:
嵌入式
由于个人从研发工作,所以下面从读写器方面论述一二:
目前市场上读写器构架分为两大类:
第一大类:
采用MCU+FPGA(DSP)+RF
由于集成ASIC内部速度、信噪比、灵敏度、稳定性、数据预处理能力等原因造成的接收性能不理想,造成ASIC做的读写器几乎没有再塑空间。
如Thingmagic算是用集成ASIC系列很优秀的了,但自2007年至今一直不间断交流合作,从M5,M5e,M5e_c到M6几乎把R系列的能力发挥到极至,但是仍然远无法与ALR9900相比,原因就在这里。
但此方案采用分立元件制作读写器,通过调试各个分立模块,能使读写器达到极佳性能,不过此方案成本昂贵且开发难度大,公司没有一定的技术积累及其人员投入很难成功。
第二大类:
MCU+专用IC
读写器RF芯片厂商有Impinj、Wj、奥威、Phychips等,占有率最高的是Impinj的R2000和奥威的AS399X
模拟前端射频性能如接收灵敏度、密集标签阅读、稳定性等方面R2000为最优,AS399X其次,PR9000最差。
R2000灵敏度在5dBm的泄漏下能够达到-84dBm,而且TXphasenoise也到了-124dBc/Hz了,这对发射频谱相当不错,这指标对DRM模式相当重要。
但软件开发难度上,R2000的源代码是在WinCE环境下,具有较高的起始成本;AS399X则集成了部分EPC协议,减低了开发门槛和开发成本。
读写器防碰撞性能有两个关键因素:
1.与射频模拟部分的质量有很大关系。
也就是说,如果射频质量不好的话,
是绝对会影响防碰装算法的,所以做高性能读写器,最好选用R2000,如果条件允许可以选用第一大类
2.与控制器的算法有很大关系
最后补充一点:
从公司安全角度见,公司的所有核心产品只有一个方案,万一核心芯片供货渠道或芯片厂商出现重大问题,将是很危险的。
AS399X、R1000/2000等芯片架构读写器的简单分析2012-02-0911:
25:
48
分类:
嵌入式
进入RFID的超高频行业后,一直用AS399X开发超高频读写器,
下面对
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 博客 碰撞 算法