




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
121国外相关研究状况RFID迅速发展的推动因素主要有两个。第一是RFID芯片的生产开始形成规模,产品成本大幅下降。在不久的将来一个包括RFID芯片的电子标签极端最低成本可以达到12美分,甚至更低。第二,大宗零售业开始接受和应用RFID技术,RFID正不断赢得众多大型用户的注意。目前国际市场的需求主要来自于零售商。RFID的迅速发展,使得其标准的制定也日臻完善。目前国际上比较完善的3,4RFID标准有三个ISO、欧美的EPCGLOBAL以及日本的UBIQUITOUSIDCENTER。而这三个组织对RFID技术应用规范都有各自的目标与发展规划。ISO14443和ISO15693标准在1995年开始操作,其完成则是在2000年之后,二者皆以1356MHZ交变信号为载波频率。ISO15693读写距离较远,而ISO14443读写距离稍近,但应用较广泛。美国运通卡(AMERICANEXPRESS)、万事达卡(MASTERCARD)和维萨卡(VISA)公司在无线交易时均已采用了ISO14443标准。反碰撞算法技术是RFID的核心技术之一,这也是和接触式IC卡的主要区别。基于标准中对防碰撞算法的规定,目前存在的防碰撞算法大致可分为三种空分多路5法(SDMA),是在分离的空间范围内进行多目标识别的技术;频分多路法(FDMA),是把多个不同载波频率作为多个传输通路供多个标签使用的技术;时分多路法(TDMA),把整个可供使用的通路容量按时间分片分配给多个用户。ISO14443和ISO15693标准对防碰撞机制做出了规定。ISO15693采用轮寻机制、分时查询的方式完成防冲撞机制。随后推出的ISO14443标准解决了ISO15693标准的数据传输速度慢,无法处理大量加密数据的缺点,并在ISO144433分别规定了TYPEA和TYPEB的防冲撞机制。二者防冲撞机制的原理不同,前者是基于位碰撞检测协议,而TYPEB利用通信系列命令序列完成防冲撞。其中A型卡的反碰撞机理如下当一个A型卡到达了读写器的作用范围内,并且有足够的供应电能,卡就开始执行一些预置的程序后,智能卡进入闲置状态。处于“闲置状态”的智能卡不能对读写器传输给其它智能卡的数据起响应。智能卡在“闲置状态”接收到有效的REQA命令,则回送对请求的应答字ATQA。当智能卡对REQA命令作了应答后,智能卡处于READY状态。读写器识别出在作用范围内至少有一张智能卡存在。通过发送SELECT命令启动“二进制检索树”防碰撞算法,选出一张智能卡,对其进行操作。动态ALOHA算法是一种轮寻机制的算法。根据碰撞问题本身的数学特性而采用的一种RFID的防碰撞算法。它既没有检测机制也没有恢复机制,只是通过某种数据编码检测冲突的存在,动态地调整个读写器的报警时间(读取时间),从而达到将数据帧接收错误率降低到所要求的程度,并同时对标签的数据吞吐率没有损失。使用这种方法,应答器和读写器都只要分别有传输和接收装置就可以了,可大大降低成本。这种方法适用于只读标签中,这类应答器通常只有一些数据(序列号)传输给读写器,并且是周期地循环地将这些数据发给读写器的,它适用的场合有超市对货物的管理、图书馆对图书的管理、动物园对动物的监控等数据交换量不大、带宽要求比较低的场合。6现在已有的反碰撞算法有随机问询的ALOHA算法、分隙ALOHA算法,信息的最佳利用率分别为L84、368,但随着标签数量的扩大,性能将急剧恶化。122我国相关的研究状况2004年1月我国宣布成立跨部门小组研发RFID技术,以便在这项新兴技术上取得领先优势。在我国常用的RFID国际标准主要有用于动物识别的ISO11784和ISO11785,用于非接触智能卡的ISO10536(CLOSECOUPLEDCARDS)、ISO15693(VICINITYCARDS)和ISO14443(PRONIMITYCARDS),用于集装箱识别的ISO10374等。1996年佛山市政府安装了RFID系统用于自动收取路桥费,明显地提高车辆通过率,缓解公路瓶颈。车辆可以在250公里的时速下用少于05毫秒的时间被识别,并且正确率达9995。上海也安装了基于RFID技术的自动收缴养路费系统。广州也已经在开放的高速公路上用RFID系统对高速行驶的车辆进行自动收费。从2005年我国开始更新使用非接触式的IC卡公民身份证,这将为我国RFID产业带来一个巨大的潜在市场,积极地推动我国相关技术的发展。第二代电子身份证采用的标准是ISO14443TYPEB协议。ISO14443定义了TYPEA、TYPEB两种类型协议,通信速率为106KBIT/S,它们的不同主要在于载波的调制深度及位的编码方式。TYPEA采用开关键控(ONOFFKEYING)的曼彻斯特编码,TYPEB采用NRZL的BPSK编码。TYPEB与TYPEA相比,具有传输能量不中断、速率更高、抗干扰能力列强的优点。防冲撞机制使得同时处于读写区内的多张卡的正确操作成为可能,大大提高了操作速度。作为RFID系统关键的反碰撞算法,我国也已经有很多学者进行了相关的研究。发表了很多有关反碰撞算法的学术论文,对一些系统反碰撞算法作了原理阐述并完成了算法的实现。例如ALOHA随机推迟系统反碰撞算法、符合ISO14443TYPEA标准的7二进制树形搜索算法等。8,913论文研究内容及结构安排本论文着重研究了RFID系统的反碰撞算法,介绍一种快速高效的RFID系统反碰撞算法跳跃式二进制树形算法,并利用VERILOGHDL语言对算法进行了设计同时利用FPGA器件进行了计算机仿真。10,在第一章中,主要介绍了课题的研究背景和研究意义,并介绍了国内外相关的研究现状。作为基础知识准备,本文在第二章首先介绍了一些相关的基础知识,其中包括RFID系统的结构与工作原理,跳跃式二进制树形反碰撞算法原理阐述,以及FPGA的相关基础知识等。同时在第二章中详细介绍了RFID系统反碰撞算法的实现,包括RFID系统反碰撞算法总体设计方案;RFID标签VERILOGHDL模型的建立;RFID读写器MANCHESTER解码及碰撞位判断模型的建立;树形节点信息处理与LIFO栈模型;反碰撞算法状态机的实现。在第三章中对反碰撞算法进行了系统的仿真并对仿真结果进行了详细分析,同时给出该算法的主要性能指标。在仿真的过程中采用先分立后综合的方式,先对各个分立的模块进行仿真,最后将各个模块组合起来进行综合仿真,然后根据得到的仿真数据直观地反映算法的各项性能参数。具体内容包括标签的仿真结果及其分析;读写器MANCHESTER解码及碰撞位判断的仿真结果及分析;用于存储树形节点信息的LIFO栈仿真结果及分析;RFID系统反碰撞算法的综合仿真结果;RFID系统反碰撞算法的性能分析。最后在第四章对本文进行了总结。2RFID系统防碰撞算法设计21RFID系统与反碰撞算法211RFID的系统结构与工作原理无线射频识别系统RFID(RADIOFREQUENCYIDENTIFICATIONSYSTEM),一般由RFID标签、RFID读写器以及计算机系统组成,如图1所示。系统基本工作原理如下RFID12标签进入磁场,接收RFID读写器发出的射频信号,凭借感应电流所获得的能量发送出存储在芯片中的产品信息(无源标签)或者主动发送某一频率的信号(有源标签),RFID读写器读取信息后,解码,送至计算机系统对有关数据进行处理。RFID标签RFID读写器计算机信息系统图1RFID的基本结构组成下面对RFID的系统结构以及工作原理做较详细的说明。131、RFID系统基本结构(1)RFID标签RFID标签由耦合元件及芯片组成,每个标签具有惟一的电子编码,附着在物体目标对象上。电子标签像纸一样薄,柔韧可弯曲并可编程,射频标签内编写的程序可按特殊的应用进行随时读取和改写。射频标签也可编入相应人员的一些数据信息,这些人员的数据信息可依据需要进行分类管理,并可随不同的需要制作新卡,射频标签中的内容被改写的同时也可以被永久锁死保护起来。通常标签芯片体积很小,厚度一般不超过035MM,可以印制在纸张、塑料、木材、玻璃、纺织品等包装材料上,也可以直接制作在商品标签上,通过自动贴标签机进行自动贴标。从能量方面来看,标签可以分为两种无源标签和有源标签。无源标签自身不带有电源,当读取装置对标签进行读取时,所发射出的无线电接触到RFID标签的天线后产生电量。它的重量轻、体积小,寿命可以很长,但是发射距离受限。有源标签使用卡内的电池能量,识别的距离长,但是它的价格较高且寿命短。从功能方面来看,可将RFID标签分为四种只读标签、可重写标签、带微处理器标签和配有传感器的标签。只读型标签的结构功能最简单,包含的信息较少并且不能被更改;可重写型标签集成了容量为几十字节到几万个字节的闪存,标签内的信息能被更改或重写,只读型和可重写型标签都主要应用于物流系统以及生产过程管理系统和行李控制系统中;带微处理器标签依靠内置式只读存储器中储存的操作系统和程序来工作,出于安全的目的,许多标签都同时具备加密电路,现在这类标签主要应用于非接触型IC卡上,既用于电子结算、出入管理,也可用作会员卡;有些RFID标签集成了传感器,包括温度传感器或压力传感器等,目前这类标签主要用于动物个体识别和轮胎管理上。按调制方式来分,电子标签还可分为主动式标签和被动式标签。主动式标签用自身的射频能量主动地发送数据给读写器,主要用于有障碍物的应用中;被动式标签使用调制散射方式发射数据,它必须利用读写器的载波来调制自己的信号,在门禁或交通的应用中较适宜。(2)RFID读写器读写器是负责读取或写入标签信息的设备,读写器可以是单独的整体,也可以作为部件的形式嵌入到其他系统中去。它可以单独具有读写、显示、数据处理等功能,也可与计算机或其他系统进行联合,完成对射频标签的操作。读写器由两个基本的功能块组成控制系统和由发送器及接收器组成的高频接口。读写器高频接口的功能包括产生高频的发射功率,为启动电子标签提供能量;对发射信号进行调制将数据传送给电子标签;接收并解调来自电子标签的高频信号。读写器控制单元的功能包括与应用软件进行通信,并执行应用系统软件发来的命令;控制与电子标签的通信过程;信号的编码与解码。在一些复杂的系统中,控制单元还要执行反碰撞算法,同时对电子标签与读写器之间要传送的数据进行加密和解密,并且进行电子标签和读写器之间的身份验证。读写器可将主机的读写命令传到电子标签,再把从主机发往电子标签的数据加密,将电子标签返回的数据解密后送到主机。读写器将要发送的信号,经编码后加载在特定频率的载波信号上经天线向外发送,进入读写器工作区域的电子标签接收此脉冲信号,然后标签内芯片中的有关电路对此信号进行调制、解码、解密,然后对命令请求、密码、权限等进行判断。若为读取命令,控制逻辑电路则从存储器中读取有关信息,经加密、编码后经标签内的天线发送给读写器,读写器对接收到的信号进行解调、解码、解密后送至计算机处理若是修改信息的写入命令,有关控制逻辑引起的内部电荷泵提升工作电压,对标签中的内容进行改写。(3)计算机信息系统计算机信息系统主要完成数据信息的存储及管理、对卡进行读写控制,数据管理系统可以是市面上现有的各种大小不一的数据库或供应链系统,用户还能够买到面向特定行业的高度专业化的库存数据库,或者把RFID系统当成整个企业ERP的一部分。如果应用情况比较特殊,甚至可以自己动手编写数据库应用软件,采用PC机或者是终端机来完成。2、RFID系统工作原理绝大多数射频识别系统是按电感耦合的原理工作的,读写器在数据管理系统的控制下发送出一定频率的射频信号,当电子标签进入磁场时产生感应电流从而获得能量,发送出自身编码等信息,该信息被读写器读取并解码后送至管理系统(一般是电脑主机)进行有关处理,这一信息的收集处理过程是以无线方式进行的。212跳跃式二进制树形反碰撞算法原理在射频识别系统中,不能排除在读写器范围内存在多个电子标签的情况,于是系统中存在两种通信形式从读写器到电子标签的数据传输,即读写器发送的数据流被覆盖范围内的多个标签所接收,这种通信形式也被称为无线电广播;在读写器的作用范围内有多个标签同时应答,这种形式被称为多路存取。在后一种通信形式中,标签数据的混叠问题就是我们所说的碰撞问题。为了防止由于多个电子标签的数据在读写器的接收机中相互碰撞而不能准确读出,必须采用反碰撞算法来加以克服。本文中设计的跳跃式二进制树形算法属于时分多路的复用方式。文中阐述算法原理及算法设计仿真的过程中标签均以简化的8位EPC码标签为例。下面阐述跳跃式二进制树形算法的工作原理。1、算法建立的几点基础约定(1)跳跃式二进制树形反碰撞算法的关键是确定数据发生碰撞的具体位置。为了解决这一问题,标签数据采用曼彻斯特编码的副载波调制。该编码的特点是,在位14持续时间内位值由电平的改变来表示。在半个比特周期时的负边沿表示二进制1,这时前半个比特周期含有副载波信号;在半个比特周期中的正边沿表示二进制0,这时后半个比特周期含有副载波信号。当两个以上卡片将数据返回给终端时,由于返回的数据包含卡片的唯一EPC码,所以一定会在同时返回的某一位上有不同的位值,这样就将正负边沿抵消了,在整个比特周期中,终端得到的是不间断的副载波信号,这样的波形信号终端将不能识别为0或1,终端认为在该数据位上发生了碰撞。如图2所示。图2用曼彻斯特编码的标签返回数据能够被识别出碰撞位其他的编码方式如CRC检验码、奇偶校验码等也能够确定标签是否发生碰撞。但是这些编码方式只能检验是否发生了冲突,并不能准确地检测出碰撞发生在哪一位。则识读时只能采用轮询的方式进行,大大降低了识别的效率。(2)为了便于算法执行的描述,定义两个命令CALL(EPC,M)及SLEEP(EPC,M)。其中CALL(EPC,M)命令的含义为读写器向覆盖范围内的标签发送召唤指令,如果标签EPC码与CALL命令中EPC参数的前M位相等,那么满足这个条件的EPC标签作出应答,向读写器发送EPC码,不满足条件的EPC标签则处于空闲状态不作应答。这样做可以有效的缩小预选范围。特别地,在第一次CALL命令中EPC00000000,M0,作用范围内的所有标签都做出应答。SLEEPEPC,M的含义与CALL命令类似,如果标签EPC码与SLEEP命令中EPC参数的前M位相等,那么满足这个条件的EPC标签进入睡眠状态,再次收到CALL指令时不作应答。欲重新激活睡眠标签必须使得标签脱离读写器的作用范围才可奏效。2、算法原理下面以一个实例来直观的描述该算法的原理。设在某时刻有四个标签同时进入读写器的作用范围内,它们的EPC码分别为EPC110100011,EPC210011011,EPC300010001,EPC411101100。如图3所示,其CALL命令的执行过程如下(1)发送CALL(00000000,0)命令,EPC1,EPC2,EPC3,EPC4均做出应答。混叠的数据返回给读写器,由于此时各个位均有冲突,所以读写器识别为。接下来算法将CALL命令中的EPC的最高冲突位置为0,EPC0,然后根据EPC参数求出M,此时M1。同时算法将接收到的EPC最高冲突位置为1,并保存在用于存储树形节点信息的LIFO(LASTINFIRSTOUT)栈中。(2)发送CALL(0,1)命令,此时只有EPC3满足CALL命令的应答条件,作出应答。读写器收到的信息仅由EPC3发出,不存在碰撞问题。读写器将EPC3的EPC码00010001存入RAM中等候处理。然后发送SLEEP(00010001,8)命令,强制EPC3进入睡眠状态。最后算法读出LIFO栈中的节点信息,EPC1,求出M1。为下一次CALL命令做准备。(3)发送CALL(1,1)命令,此时EPC1,EPC2,EPC4满足条件做出应答。读写器识别为1,读写器接下来重复类似(1)中的操作,形成下一次CALL命令的参数EPC10,M2并将节点信息11存入LIFO栈中。(4)发送CALL(10,2)命令,此时EPC1,EPC2满足条件做出应答。读写器识别为10011,读写器将最高冲突位置0,形成下次CALL命令参数EPC100011,M3。将最高冲突位置1,作为节点信息保存在LIFO栈中。开始节点1EPC3(00010001)节点2节点3EPC4(11101100)EPC210011011EPC1101000111CALL00000000,02CALL0,13CALL1,14CALL10,25CALL100011,36CALL101011,37CALL11,2110011图3跳跃式二进制树形反碰撞算法示意图(5)发送CALL(100011,3)命令,此时只有EPC2满足CALL命令的条件做出应答,读写器识别位10011011,不存在碰撞问题。读写器将EPC2的EPC码10011011存入RAM中等候处理。然后发送SLEEP(10011011,8)命令,强制EPC3进入睡眠状态。最后算法读出LIFO栈中的节点信息,EPC101011,求出M3。为下一次CALL命令做准备。(6)发送CALL(101011,3)命令,此时只有EPC1满足CALL命令的条件做出应答,读写器识别位10100011,不存在碰撞问题。读写器将EPC1的EPC码10100011存入RAM中等候处理。然后发送SLEEP(10100011,8)命令,强制EPC1进入睡眠状态。最后算法读出LIFO栈中的节点信息,EPC11,求出M2。为下一次CALL命令做准备。(7)发送CALL(11,2)命令,此时只有EPC4满足CALL命令的条件做出应答,读写器识别位11101100,不存在碰撞问题。读写器将EPC4的EPC码11101100存入RAM中等候处理。然后发送SLEEP(11101100,8)命令,强制EPC4进入睡眠状态。此时LIFO栈为空,说明算法已经遍历了二进制树的每一个节点。至此整个反碰撞算法执行完毕,EPC1、EPC2、EPC3、EPC4的EPC码已经被识别出来,并保存起来以便于读写器进行下一步操作。从以上的过程中可以看出,CALL命令的EPC参数由碰撞位的判断得出,而CALL命令中的M参数又由相应的EPC参数求得的,这样就使得算法在执行过程中跳过了空闲的节点,提高了算法的执行效率。又因为算法可以形象地用二进制树来描述,故称为“跳跃式二进制树形反碰撞算法”。3、效率分析对于形如图3所示的一个具有N个叶的二进制树,它的分支节点数目则为(N1),每个分支节点具有两个分支,总的分支数目即为(2N2),再加上主干后数目为(2N1)。对于本算法的二进制树主干与分支的数目总合即为读写器发送CALL命令的次数,二进制树叶的数目即为标签的数目。从而可以得出这样的结论分辨N个标签共需要(2N1)个CALL命令时隙。算法的效率公式为/21N当N逐渐增大时算法的效率趋近于50。213FPGA实现算法的优越性进入到20世纪90年代以后,电子设计自动化(ELECTRONICSDESIGNAUTOMATION,EDA)技术的发展和普及给数字系统的设计带来了革命性的变化。在器件方面,可编程逻辑器件(PROGRAMMABLELOGICDEVICE,PLD)的飞速发展。利用EDA工具,采用可编程逻辑器件,正在成为数字系统设计的主流。采用可编程逻辑器件通过对器件内部的设计来实现系统功能,是一种基于芯片的设计方法。设计者可以根据需要来定义器件的内部逻辑和引出端,将电路板设计的大部分工作放在芯片的设计中进行,通过对芯片设计实现数字逻辑的功能。灵活的内部功能块组合、引出端定义等,可大大减轻电路设计和电路板设计的工作量和难度,有效地增强设计的灵活性,提高工作效率。同时采用可编程逻辑器件,设计人员在实验室可以反复编程,修改错误,以便尽快开发产品,迅速占领市场。基于芯片的设计方法可以减少芯片的数量,缩小系统体积,降低功耗,提高系统性能和可靠性。相对于通用处理器而言,使用FPGA实现算法可以使得算法的执行速度大幅度的提高。通用处理器在执行软件算法的过程中,各种指令的调用占据了相当一部分时间,使得算法的执行效率大大降低,以至于在某些特定应用中不能满足所需要的处理速度,况且通用处理器平台价格高,体积较大。不具备良好的移动性,不适合作为小型终端的解决方案。在这种情况下用FPGA来实现算法就成为了最好的解决方案之一。用FPGA实现反碰撞算法首先要使用EDA工具做出算法的设计输入工作,设计输入有原理图输入,HDL硬件描述语言输入等方法。算法完成设计输入后再对算法进行一系列的仿真工作,以达到与实际实现时高度吻合的仿真效果。仿真设计是数字系统设计中关键的一个环节。可以分为功能仿真和时序仿真。功能仿真(FUNCTIONSIMULATION)的作用是对源代码进行编译,检测在语法上是否正确,发现错误,并且提出出错的原因,设计者可以根据提示进行修改。编译通过后,仿真器再根据输入信号产生输出,进而来判断设计在功能上的正确性。如果不正确再返回修改,如此反复帮助纠正功能上的错误之处。功能仿真从理想的角度出发来验证功能的正确性,并不考虑网络及器件的延时。时序仿真则将器件和网络的延时考虑了进去,以用来模拟物理实现的运行状况。时序仿真可以达到非常准确的仿真效果。使得投片的成功率几乎达到100。像ALTERA公司的QUARTUSII集成开发环境,XILINX公司的15ISE集成开发环境都提供了很好的仿真工具。另外软件还可以通过标准接口调用第三16方仿真工具来进行辅助设计,例如可以通过著名的MODELSIM仿真软件来进行仿真等。可见使用FPGA实现反碰撞算法具有速度快,成本低,小巧灵活等优点。22RFID系统反碰撞算法的实现在21中详尽地阐述了跳跃式二进制树形反碰撞算法的工作原理。在本章接下来的几节中将完成该算法的VERILOGHDL语言实现。现代的数字系统设计基本上采用自上而下的设计流程。首先对设计对象进行总体描述确定设计对象的行为模型;然后将设计对象进行细化,划分为更为基本的功能模块进行分别设计验证;最后将各个分立的功能模块组合起来形成整体的系统。在每一个功能模块的设计中又分为如下的几个流程(1)设计输入对所设计的功能模块进行HDL语言描述或原理图描述;(2)设计编译完成设计输入的逻辑综合,时序分析,将设计配置到器件中;(3)功能仿真验证设计在功能上的正确性,不考虑器件的延时;(4)时序仿真结合器件的延时特性,模拟实际物理器件的运行结果。下面就采取自上而下的设计流程来实现跳跃式二进制树形反碰撞算法的设计。221RFID系统反碰撞算法总体设计方案由于RFID系统终端由读写器与标签共同组成,反碰撞算法的执行过程需要读写器与标签之间的数次信息交互来完成。所以算法的VERILOGHDL设计包含标签与读写器两个物理模块。关系如图4所示EPC标签模块RFID读写器模块EPC数据CALL,SLEEP等控制信号图4标签与读写器示意图EPC标签模块可以抽象为一个MANCHESTER编码器模块,RFID读写器内部包含着三个基本的功能模块MANCHESTER解码器模块、LIFO模块和控制整个算法的状态机模块。其最基本的模块连接关系如图5所示。算法的工作流程如下(1)RFID读写器内部的状态机每隔一段时间发送一次CALL命令;(2)读写器有效范围内的标签收到CALL命令后判断是否满足CALL命令的条件,如果满足条件则发送EPC码给读写器,如果不满足条件则不作反应;3读写器收到标签发来的数据进行MANCHESTER解码;如果没有碰撞发生则存储EPC码后强制该标签进入睡眠状态。如果产生碰撞则根据解出的数据和碰撞位标志进行下一次CALL命令。如此循环执行直到读写器范围内的所有标签被识别出来。其流程图如图6所示。MANCHETER编码器MANCHETER解码器算法控制状态机LIFO控制信号1控制信号2控制信号3编码后EPC数据解码后EPC数据存取节点信息数据反馈信号RFID读写器图5RFID反碰撞算法基本功能模块连接方式在接下来的内容中将分别对各个基本功能模块做详细的设计分析。复位是否有满足条件的标签发送CALL命令否标签发送EPC码解码器解码是否发生碰撞保存EPC码发送SLEEP命令将识别出的标签置为睡眠状态判断LIFO是否为空读取节点信息是保存节点信息生成CALL命令参数是否是否开始图6跳跃式二进制树形反碰撞算法的流程图222RFID标签模型的建立前面已经讲过RFID标签可以模型化为一个MANCHESTER编码器,它的主要数据输入包括该标签的EPC码,CALL或SLEEP命令标志以及相应的EPC参数和M参数。当接收到RFID读写器也就是算法控制状态机的控制信号后作出相应的判断,如果满足CALL命令的条件则开始对EPC码进行MANCHESTER编码,编码完成后将编码后数据发送给MANCHESTER解码器,MANCHESTER解码器接收到数据后开始进行解码工作。如果满足SLEEP命令的条件,标签则进入睡眠状态,对以后的CALL命令不作应答。其流程图如图7所示。开始CALL1或SLEEP1将输入数据存入寄存器中判断是否满足命令条件是否是判断CALL是否等于1是标签进入睡眠状态开始对EPC做MANCHESTER编码向RFID读写器发送编码数据否否图7RFID标签的工作流程图在MANCHESTER编码器模块中,最关键的一点就是对标签是否满足命令条件做出判断。其中需要注意的是当M0时一定满足命令条件。当M0时就需要比较EPC码与命令参数EPC的前M位是否相等,本设计中采用的方法是将EPC码和EPC参数同时右移(8M)位然后比较移位后的数据是否相等,如果相等则说明满足命令条件,开始进行MANCHESTER编码,否则命令条件不满足,标签不作任何动作。223RFID读写器MANCHESTER解码及碰撞位判断模型MANCHESTER解码及碰撞位的判断是整个反碰撞算法的最关键部分。解码和碰撞位判断均由MANCHESTER解码器模块完成。当读写器范围内存在多个标签时,多个标签同时向读写器发送信息,MANCHESTER解码器接收到的是混叠在一起数据信号。对于没有碰撞的位,MANCHESTER码叠加在一起后其信号波形仍然反映明确的1或0数据,只需要按照正常的解码方式解码即可。然而对于发生碰撞的数位,原本携带数据信息的上升和下降相互抵消了,根据这一特点解码器便可以准确地定出碰撞位。但是我们知道FPGA中存储器只有0和1两个状态,所以存储解码数据的寄存器要么是0要么是1,无法自己表示出哪一位为碰撞位。这就要求伴随着解码数据寄存器,要有一个碰撞位标志寄存器来对碰撞位最出准确的标记。在本算法中标志寄存器中的1表示数据寄存器相应的位为冲突位,其数据为无效数据。如图6所示解码数据寄存器显示的数据是10101011,标志位寄存器为10100010,这表示解码数据寄存器的位7、位5和位1为碰撞位,其数据是无效数据。实际的解码结果为00101。解码数据寄存器碰撞位标志寄存器实际表示意义110100100000011100101图8解码数据与碰撞位的表示MANCHESTER解码器的工作流程如图9所示。开始接收RFID标签发送来的数据是否检测到编码的同步头是对每位编码的1/4,3/4处进行采样根据采样数据解出数据及碰撞位标志将解码数据及碰撞位标志发送给状态机否图9MANCHESTER解码器工作流程图首先,MANCHESTER解码器模块中定义了一个两位的移位寄存器,用来检测标签发送的MANCHESTER码的同步头,以便判断出编码的到来。一旦移位寄存器检测到标签发送过来的信号的同步头,MANCHESTER解码器开始解码工作,解码的主要原理是针对MANCHESTER编码的特点,使用高频时钟产生采样信号,图10使用高频时钟产生的采样信号对MANCHESTER码的1/4,3/4处进行采样对MANCHESTER编码信号位的1/4处和3/4处分别进行采样,如图7所示。如果采样的结果为(1,0)则解码数据为1,碰撞位标志为0;当采样的结果为(0,1)则解码数据为0,碰撞位标志为0;如果某数位有碰撞则采样的结果为(1,1),则解码数据记为0,碰撞位标志为1,说明该位解码数据为无效数据。开始SAMPLE(1,0)数据解码为1,碰撞位标志为0SAMPLE(0,1)数据解码为0,碰撞位标志为0数据默认为0,碰撞位标志为1解码结束是否是否MANCHESTER编码信号MANCHESTER解码采样信号图11MANCHESTER解码器解码关键点流程图采样信号的产生可以利用循环计数的计数器来实现。该计数器在高频时钟的边沿到来时自动加1,其循环周期与MANCHESTER编码时钟周期相等。在与MANCHESTER编码位1/4,3/4处对应的计数器数值时令采样信号为高电平即可。当解码完成后解码器将向控制状态机发送一个DATA_READY脉冲信号,表明EPC码已经解码完毕,可以向状态机传送数据。224存储节点信息的LIFO栈跳跃式二进制树形反碰撞算法之所以具有较高的效率是因为,算法在执行过程中跳过了完整二进制树的空闲节点。我们知道对于二进制树形结构每个分支节点会分出两个分支,当算法沿其中的一条分支进行时就需要记录下这个节点的信息,以便于在完成了这个分支的遍历后返回该节点,然后沿另外的一条分支向下执行算法。IDLEWRITE_READYWRITEWRITE_OVERREAD_READYREADREAD_OVERLIFOWR1MANCHESTER_ENCODERME2CLKCLK,RSTRST,CALLCALL,SLEEPSLEEP,TAG_EPCDIN2,EPCEPC,MM,MAN_CODECODE2MANCHESTER_ENCODERME3CLKCLK,RSTRST,CALLCALL,SLEEPSLEEP,TAG_EPCDIN3,EPCEPC,MM,MAN_CODECODE3OROR_GATE1SUPERPOSED,CODE1,CODE2,CODE3MANCHESTER_DECODERMD1CLKCLK,RSTRST,CALLCALL,MAN_CODESUPERPOSED,DATA_READYDATA_READY,EPC_OUTEPC1,FLAG_OUTFLAG1STATESTATE1CLKCLK,RSTRST,DATA_READYDATA_READY,EMPTY1EMPTY1,EMPTY2EMPTY2,EPC_READYEPC_READY,FLAG_READYFLAG_READY,EPCIN1EPC1,FLAGIN1FLAG1,EPCIN2EPC2,FLAGIN2FLAG2,CALLCALL,SLEEPSLEEP,LIFOWR1LIFOWR1,LIFORD1LIFORD1,LIFOWR2LIFOWR2,LIFORD2LIFORD2,LIFOWR3LIFOWR3,EPC_BUFFEREPC_BUFFER,FLAG_BUFFERFLAG_BUFFER,EPCEPC,MMLIFOLIFO1CLKCLK,RSTRST,LIFOWRLIFOWR1,LIFORDLIFORD1,DINEPC_BUFFER,DOUTEPC2,DATA_READYEPC_READY,FULLFULL1,EMPTYEMPTY1LIFOLIFO2CLKCLK,RSTRST,LIFOWRLIFOWR2,LIFORDLIFORD2,DINFLAG_BUFFER,DOUTFLAG2,DATA_READYFLAG_READY,FULLFULL2,EMPTYEMPTY2LIFOLIFO3CLKCLK,RSTRST,LIFOWRLIFOWR3,LIFORDREADEPC,DINEPC,DOUTDOUT,DATA_READYDOUT_READY,FULLFULL3,EMPTYEMPTY3连接好后,由QUARTUSII生成的连接图如图16所示。本章中详细阐述了跳跃式二进制树形反碰撞算法的具体实现。分别对算法的各个功能模块进行了详细说明。最后将各个模块连接起来完成了整个算法的VERILOGHDL语言实现。在下一章中首先将分别对各个模块进行仿真和结果分析,最后对整个算法进行综合仿真,通过对结果的分析得出算法的主要性能指标。3RFID系统反碰撞算法的FPGA仿真及分析本章将对第二章中实现的跳跃式二进制树形反碰撞算法进行FPGA器件的计算机仿真,并对仿真结果进行分析。首先分别对各个功能模块进行仿真和结果分析,然后进行算法的整体仿真和结果分析,最后根据仿真得到的数据评估算法的主要性能指标。计算机平台处理器PENTIUMM15GHZ;内存DDR333512MB。操作系统WINDOWSXPPROFESSIONALSERVICEPACK2。仿真工具QUARTUSII51BUILD21603/06/2006SJFULLVERSION。SERVICEPACK2。MODELSIMSEPLUS61B。31仿真工具及所用FPGA器件简介QUARTUSII是ALTERA的新一代设计开发软件,支持APEX20K,APEXII,EXCALIBUR,MERCURY,STRATIX,CYCLONE,CYCLONEII等新器件系列。使用QUARTUSII开发软件可以完成数字系统设计的全部流程,包括设计输入、项目编译、设计校验及器件编程等过程。QUARTUSII提供了全面的逻辑设计能力,设计人员可以将文本、图形和波形等设计方法自由组合,建立起层次化的单器件或多器件设计。编译过程完成最小化逻辑综合、适配设计项目于单个器件或多个器件及形成编程和配置数据等工作。设计校验包括功能仿真、时序仿真等多种仿真方式。本算法设计采用ALTERA推出的CYCLONEIIFPGA器件,它是CYCLONE系列低成本FPGA中的最新产品。ALTERA于2002年推出的CYCLONE器件系列永远地改变了整个FPGA行业,带给市场第一也是唯一的以最低成本为基础而设计的FPGA系列产品。ALTERA采用相同的方法在尽可能小的裸片面积下构建了CYCLONEII系列。CYCLONEII器件的制造基于300MM晶圆,采用台积电90NM工艺,提供了与其上一代产品相同的优势一套用户定义的功能、业界领先的性能、低功耗但具有更多的密度和功能,极大地降低了成本。CYCLONEII器件扩展了低成本FPGA的密度,最多达68,416个逻辑单元(LE)和11MB的嵌入式存储器。32标签的仿真结果及其分析标签的模型即为MANCHESTER编码模块。完成模块的VERILOGHDL代码输入后,首先使用QUARTUSII内置的编译工具COMPILERTOOL进行编译。编译完成后生成编译报告,如图17所示,报告中给出了FPGA资源的使用情况。其中包括使用的FPGA器件型号,逻辑单元使用数目,寄存器使用数目等信息。图17MANCHESTER编码器的编译报告编译完成后首先进行MANCHESTER编码器的功能仿真,在功能仿真之前首先要生成功能仿真网表。网表生成后即可对其进行功能仿真。321标签的功能仿真1、CALL命令的功能仿真1标签EPC码TAG_EPC10100011,CALL命令参数EPC10100111,M5。由仿真参数可知,M5,标签的EPC码TAG_EPC与CALL命令参数EPC的前5位相等,此时标签满足CALL命令的执行条件,编码器开始对EPC码进行MANCHESTER编码。信号MAN_CODE为编码器的输出数据。如图18所示编码器仿真结果正确。图18TAG_EPC10100011,EPC10100111,M5时的CALL命令功能仿真结果2标签EPC码TAG_EPC10100011,CALL命令参数EPC10100111,M6。由仿真参数可知,M6,标签的EPC码TAG_EPC与CALL命令参数EPC的前6位不等,此时标签不满足CALL命令的执行条件,则编码器不对EPC码进行MANCHESTER编码。输出信号MAN_CODE恒为低电平。如图19所示编码器仿真结果正确。图19TAG_EPC10100011,EPC10100111,M6时的CALL命令功能仿真结果2、SLEEP命令的功能仿真1标签EPC码TAG_EPC10100011,SLEEP命令参数EPC10100111,M5。读写器首先发送SLEEP命令,然后再发送CALL命令,以便验证标签是否进入睡眠状态。由仿真参数可知,M5,标签的EPC码TAG_EPC与SLEEP命令参数EPC的前5位相等,此时标签满足SLEEP命令的条件,标签内部的睡眠标志锁存器TAGSLEEP被置为1,标签被强制进入睡眠状态。随后发送相同参数的CALL命令,虽然标签满足CALL命令的执行条件,但是由于标签处于睡眠状态,所以标签不进行编码操作,即不对读写器的CALL命令做应答。输出信号恒为低电平。如图20所示编码器仿真结果正确。图20TAG_EPC10100011,EPC10100111,M5时的SLEEP命令功能仿真结果2标签EPC码TAG_EPC10100011,SLEEP命令参数EPC10100111,M6。读写器首先发送SLEEP命令,然后再发送M5的CALL命令,以便验证标签是否进入睡眠状态。由仿真参数可知,M6,标签的EPC码TAG_EPC与SLEEP命令参数EPC的前6位不等,此时标签不满足SLEEP命令的执行条件,标签内部的睡眠标志锁存器TAGSLEEP为0,标签没有进入睡眠状态。随后发送M5的CALL命令,标签满足CALL命令的执行条件,标签开始进行编码操作,输出EPC码的MANCHESTER编码。验证了标签并没有转入睡眠状态。结果如图21所示,编码器仿真结果正确。图21TAG_EPC10100011,EPC10100111,M6时的SLEEP命令功能仿真结果322标签的时序仿真1、CALL命令的时序仿真1标签EPC码TAG_EPC10100011,CALL命令参数EPC10100111,M5。如图22所示,时序仿真结果与功能仿真基本一致,区别仅在于输出的MANCHESTER编码在0,1变换的过程中会出现一个小的脉冲,这是由于器件的延时使得寄存器数据转换与编码时钟之间有了一个短暂的时差造成的。这也是解码过程中在数据位1/4,3/4处采样的原因。图22TAG_EPC10100011,EPC10100111,M5时的CALL命令时序仿真结果(2)标签EPC码TAG_EPC10100011,CALL命令参数EPC10100111,M6。由图23所示时序仿真结果与功能仿真结果完全一致,进一步说明了编码器的正确性。图23TAG_EPC10100011,EPC10100111,M6时的CALL命令时序仿真结果2、SLEEP命令的时序仿真(1)标签EPC码TAG_EPC10100011,SLEEP命令参数EPC10100111,M5。读写器首先发送SLEEP命令,然后再发送CALL命令,以便验证标签是否进入睡眠状态。图24TAG_EPC10100011,EPC10100111,M5时的SLEEP命令时序仿真结果图24所示时序仿真结果与对应的功能仿真结果完全一致,仿真结果正确。(2)标签EPC码TAG_EPC10100011,SLEEP命令参数EPC10100111,M6。读写器首先发送SLEEP命令,然后再发送M5的CALL命令,以便验证标签是否进入睡眠状态。图25TAG_EPC10100011,EPC10100111,M6时的SLEEP命令时序仿真结果图25所示的时序仿真结果与对应的功能仿真基本一致,区别仅在于输出的MANCHESTER编码在0,1变换的过程中会出现一个小的脉冲,这是由于器件的延时使得寄存器数据转换与编码时钟之间有了一个短暂的时差造成的。通过以上对MANCHESTER编码模块全面的测试,充分证明了MANCHESTER编码器模块的正确性,为算法的总体设计提供了可靠的保证。33读写器MANCHESTER解码及碰撞位判断的仿真结果及分析MANCHESTER解码及碰撞位判断是整个跳跃式二进制树形反碰撞算法的关键,它决定了能否正确地解码MANCHESTER编码数据,能否准确地判断出碰撞位的位置。只有这个模块仿真正确才能保证反碰撞算法的正确性。同MANCHESTER编码器的测试类似,首先要对MANCHESTER解码器模块进行编译。编译完成后编译器生成编译报告。FPGA器件型号,逻辑单元使用数目,寄存器使用数目等信息如图26所示。图26MANCHESTER编码器的编译报告编译完成后首先进行MANCHESTER解码器的功能仿真,在功能仿真之前首先要生成功能仿真网表。网表生成后即可对其进行功能仿真。331解码器的功能仿真(1)接收到的数据不存在碰撞现象。图27接收到的数据无碰撞现象时,解码器的功能仿真结果图27所示为接收到的数据无碰撞现象时,解码器的功能仿真结果。图示中接收到的编码信号为MAN_CODE,输出的解码数据为EPC_OUT,碰撞位标志为FLAG_OUT。图27显示,接收到的数据无碰撞时,解码器输出的解码数据为10100011,碰撞位标志为00000000,即没有碰撞发生。与输入数据的情况吻合,解码器正确地对输入数据进行了解码。(2)接收到的数据存在7、5、1位上存在碰撞现象。图28接收到的数据在7、5、1位存在碰撞现象时,解码器的功能仿真结果图28所示为接收到的数据在7、5、1位上存在碰撞现象时,解码器的功能仿真结果。解码器输出的解码数据为00000001,碰撞位标志为10100010。碰撞位标志的数值明确指出了碰撞发生在7、5、1位,所以解码数据的对应位上虽然置0,但是属于无效数据。解码输出表示的实际意义为00001。如图29所示。解码数据寄输出碰撞位标志输出实际表示意义000100000000011100001图29解码器解码数据及碰撞位标志的输出结果和实际结果解码器正确解码的关键在于对编码数据的采样。对编码数据的位持续时间的1/4,3/4处采样的情况可于图30中清楚的看到。图中对采样点以及采样寄存器数据变化打上了圆圈作为标注。图30功能仿真中解码器对编码信号1/4,3/4处的采样图示从图30中可以看到MANCHESTER编码数据采样寄存器的数据更新相对于采样点有一个时钟的延迟。采样点并没有在位持续时间的1/4,3/4处,而是提前了一定的时间,这是考虑到了实际器件实现过程中的信号延迟。在实际实现时,加上信号延时采样点就会在编码位持续时间的1/4和3/4处。这一点将在接下来的时序仿真中体现出来。332解码器的时序仿真(1)接收到的数据不存在碰撞现象。图31为接收到的数据无碰撞现象时,解码器的时序仿真结果。从结果中可以清楚地看到输出的解码数据和碰撞位标志与功能仿真中的结果是一致的,只是在最终数据形成的前沿有瞬间的不稳定值,这是器件的延时造成的。但是DATA_READY信号的生成在输出数据稳定后,保证了算法控制状态机可以准确可靠的读取解码信息。图31接收到的数据无碰撞现象时,解码器的时序仿真结果(2)接收到的数据存在7、5、1位上存在碰撞现象。图32为接收到的数据在7、5、1位存在碰撞现象时,解码器的时序仿真结果。从结果中可以清楚地看到输出的解码数据和碰撞位标志与功能仿真中的结果是一致的。只是由于器件的延时,与无碰撞位的仿真结果类似,在最终数据形成的前沿有瞬间的不稳定值。但是DATA_READY信号的生成在输出数据稳定后,仍然保证了算
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论