一种超高频RFID读写器的设计与实现

2015-11-23 03:12蒋冠宇蒋泰邓家明张余明
大众科技 2015年2期
关键词:校验码读写器计数器

蒋冠宇蒋 泰邓家明张余明

(1.清华大学,北京 100084;2.广西瀚特信息产业股份有限公司,广西 桂林 541004)

一种超高频RFID读写器的设计与实现

蒋冠宇1蒋 泰2邓家明2张余明2

(1.清华大学,北京 100084;2.广西瀚特信息产业股份有限公司,广西 桂林 541004)

目的:设计一种多标签超高频RFID读写器并实现其读写功能。方法:根据ISO18000-6短程通信接口协议,基于arm7芯片实现软件数据处理功能,采用外围硬件设计实现整个系统功能。结果:读写器能够同时读取多枚标签并且有效避免冲突发生,读取的数据可以通过服务器做进一步处理。结论:该读写器工作正常,具有比较大的应用前景。

RFID;ISO18000-6协议;防冲突算法

1 射频识别简介

1.1 射频识别的概念

射频识别(Radio Frequency Identification,RFID)是一种无线通信技术,可以通过无线电讯号识别特定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或者光学接触。

无线电的信号是通过调成无线电频率的电磁场,把数据从附着在物品上的标签上传送出去,以自动辨识与追踪该物品。某些标签在识别时从识别器发出的电磁场中就可以得到能量,并不需要电池;也有标签本身拥有电源,并可以主动发出无线电波(调成无线电频率的电磁场)。标签包含了电子存储的信息,数米之内都可以识别。与条形码不同的是,射频标签不需要处在识别器视线之内,也可以嵌入被追踪物体之内。

1.2 RFID系统组成

RFID系统包括标签、RFID读写器和RFID应用系统三大部分,如图1所示。

图1 RFID系统组成

标签:由天线,耦合元件及芯片组成,每个标签具有唯一的电子编码,附着在物体上标识目标对象。

RFID读写器:由天线,耦合元件,芯片组成,读取(有时还可以写入)标签信息的设备,是RFID系统的核心部分,主要任务是控制射频模块向标签发射读取信号,并接收标签的应答,对标签的标识信息进行解码,将标识信息连带标签上其他相关信息传输到主机以供处理。读写器具有对电子标签的ID号列举、数据读、写等功能,例如:(1)唤醒标签:只有被唤醒的标签才能与读写器进行通信,防止系统外其它标签的干扰,确保读写器与本系统标签信息交换的可靠与准确。(2)读取标签数据:不仅可以读取标签的ID 号,还可读取指定标签存储区的数据;不仅可以读取单个标签的数据,而且可以同时读取天线发射波范围内的多个标签的数据。(3)写入标签数据:可以向指定的标签存储区写入数据。(4)对标签数据进行保护:对指定的标签存储区设置“写保护”,将使该存储区的数据被锁存并永久“保护”,不被改写。

应用软件系统:是应用层软件,主要是把收集的数据进一步处理,并为人们所使用。

1.3 RFID系统的工作原理

标签进入磁场后,接收读写器发出的射频信号,凭借感应电流所获得的能量发送出存储在芯片中的产品信息(无源标签或被动标签),或者由标签主动发送某一频率的信号(Active Tag,有源标签或主动标签),读写器读取信息并解码后,送至中央信息系统进行有关数据处理。

2 RFID读写器硬件设计

超高频RFID标签读写器主要由控制模块、发射模块、接收模块、基带处理模块、通道切换模块等构成,如图2所示。发射模块受控制模块控制,为读写器提供载波信号,并对载波信号进行调制和功率放大后,通过发射模块、通道切换模块的射频接口输出发射信号至电子标签;同时,射频接口接收电子标签返回的反射信号,输入到接收模块;接收模块将电子标签返回的反射信号进行零中频解调,实现双路正交解码,输出两路基带信号;基带处理模块对两路基带信号进行滤波、放大、整形,得到控制模块可处理的低频信号;控制模块同时接收和处理两路正交低频信号,根据相关协议将信号恢复为电子标签的原始信息。

图2 超高频RFID标签读写器结构

3 RFID读写器接口协议

RFID接口协议:空中接口通信协议规范读写器与电子标签之间信息交互,目的是为不同厂家生产设备之间的互联互通性。ISO/IEC制定五种频段的空中接口协议,这种思想充分体现标准统一的相对性,一个标准是对相当广泛的应用系统的共同需求,但不是所有应用系统的需求,一组标准可以满足更大范围的应用需求。

ISO18000-6信息技术-基于单品管理的射频识别-适用于超高频段 860~960MHz,规定读写器与标签之间的物理接口、协议和命令再加上防碰撞方法。它包含TypeA、TypeB和TypeC三种无源标签的接口协议,通信距离最远可以达到10m。其中TypeC是由EPCglobal起草的,并于2006年7月获得批准,它在识别速度、读写速度、数据容量、防碰撞、信息安全、频段适应能力、抗干扰等方面有较大提高。2006年递交V4.0草案,它针对带辅助电源和传感器电子标签的特点进行扩展,包括标签数据存储方式和交互命令。带电池的主动式标签可以提供较大范围的读取能力和更强的通信可靠性,不过其尺寸较大,价格也更贵一些。

本超高频RFID读写器采用TypeB接口协议。

3.1 数据编码

(1)前向链路(读写器到标签):读写器通过调制载波完成到识别卡的数据传送,数据编码通过产生曼彻斯特编码的脉冲实现。

(2)返向链路(标签到读写器):对于标签到读写器的通信,发送数据使用反向散射技术。这需要在返向链路上读写器给识别卡提供稳定的能量。当读写器向识别卡提供能量时,识别卡将交替的改变其天线前端的有效阻抗,从而改变能被读写器辨识的识别卡的射频反射率。

(3)命令的格式:命令帧由下列域组成:帧头检测,帧头,分隔符,命令码,参数,CRC-16。

(4)帧头检测域由一个稳定的没有调制的载波组成,持续时间至少400us。一般来说此类短程通讯的速率为40kbps,对应帧头检测域为16位。

帧头等效为9位非归零格式的曼彻斯特码0,编码形式为010101010101010101。

CRC-16:CRC即循环冗余校验码(Cyclic Redundancy Check[1] ):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。

帧的格式:响应帧由静默域,返回帧头,数据域以及CRC-16构成。

3.2 Btree协议与冲突仲裁

(1)全协议的描述

标签主要有四个主要状态:电源关闭状态(power-off),当读写器不能激活识别卡时,识别卡处于电源关闭状态(对于有源标签,意味着射频激励强度不足以激活标签的回路);就绪状态(ready),当读写器第一次激活标签时,识别卡处于ready状态;识别状态(ID),当标签试图向读写器传送识别信息时,识别卡处于 ID状态;数据交换状态(DATA-EXCHANGE)状态,当识别卡被读写器识别并被选中时,识别卡处于数据交换状态。

(2)冲突仲裁

读写器可用GROUP_SELECT与GROUP_UNSELECT命令,使所有或一部分在读写器射频电磁场的标签参与冲突仲裁。为了支持仲裁冲突,标签卡上应该具有两个硬件电路:一个8bit计数器 COUNT,以及一个随机数发生器(两个可能的值:0或1)。开始时,一组标签通过GROUP_SELECT命令转换到ID状态,还应该将它们内部的计数器置0。

在上述选择过程后,实现下列循环:

①所有处于ID状态且计数器COUNT为0的标签应发送它们的ID号。最初这个组包含所有选中的标签;

②如果多于一个标签在发送,该读写器接受一个错误的响应,发出FAIL命令;

③计数器COUNT不等于0的标签在接收到FAIL命令后,将增加COUNT,它们将更没有机会发送ID。计数器等于0的识别卡在接收到FAIL命令后,将生成一个随机数。随机数为1的标签将增加COUNT,它们将不会发送。随机数为0的识别卡将保持COUNT为0,并且再一次发送ID。现在出现四种可能情况之一;

④如果多于一个标签发送,则重复FAIL;

⑤如果所有标签的COUNT不为0,无标签发送,读写器接收不到信号,将发出 SUCCESS命令。所有内部计数器 COUNT减小,以及计数器COUNT为0的标签发送。一般来说,这样会返回②;

⑥如果只有一个标签发送并且ID号被正确读到,读写器应发送带此ID的DATA_READ命令。如果DATA_READ命令被识别卡正确地收到,该识别卡应转为 DATA_EXCHANGE状态,并发送它的数据。读写器发送SUCCESS命令,所有处于ID状态的标签减小计数器COUNT;

⑦如果只有一个标签的计数器COUNT为1,重复第五步或第六步。如果多于一个标签发送,重复②;

⑧如果只有一个标签发送,而接受的ID有错误,该读写器应发送RESEND命令。如果ID正确地收到,重复5。如果重发接收ID有若干个,则会假定有多个标签发送,重复②。

(3)命令

命令分为四个功能组:选择命令,识别命令,数据传输命令以及多卡处理命令。

命令为下列类型之一:强制的,可选的,定制的以及专有的。

具体命令的标准见ISO18000-6B协议标准。

4 RFID读写器软件实现

本读写器利用LPC-2132单片机开发,其软件实现步骤主要如下:

(1)定义常量

超高频RFID读写器系统比较复杂,其中涉及许多固定的命令和寄存器,将这些常量定义有利于代码的阅读和理解。

命令:

上文提到,标签主要存在四个状态,状态间的转换主要靠读写器发送的命令实现,以达到不同的目的。

命令主要分为两类:

①选择命令

选择(selection)命令根据某种条件在射频场中选择一组识别卡,进行识别或写入数据,此命令可用于冲突仲裁。比如GROUP_SELECT_XX(用于选择标签,XX表示不同的条件),GROUP_UNSELECT_XX(用于去选择),SUCCESS(当标签内部计数器COUNT为0的时候响应,发送ID),RESEND(重新发送ID),INITIALIZE(复位),FAIL_O(多于一个标签试图识别自己是,使某些标签退避)

②数据转移命令

数据转移命令用于数据从存储器读出或写入存储器。比如READ(标签在满足一定条件时转化为DATA_EXCHANGE状态),READ_FLAGS(读flags),READ_VARIABLE读指定长度的内容等等)。

以上每个命令都对应自己的命令码,程序中将这些命令码常量定义为以上的表达形式。

寄存器:单片机每个模块都有自己的寄存器用来存储数据,而每个寄存器对应的地址是固定的,比如在定时器中有中断寄存器(0xE0004000),定时器控制寄存器(0xE0004004),定时器计数器(0xE0004008)等,将它们的地址定义成一个相关的名字,T0IR,T0TCR,T0TC。

(2)定义函数

读写器的软件功能靠不同的函数实现。函数按模块划分,主要如下:外设定义,读取数据,写入数据,发送数据,循环冗余校验,数据编码等。

①外设定义

读写器通过单片机开发,为实现其功能需要单片机的外部设备,这就需要启动初始化外设并且设定相关参数。比较重要的外部设备有通用I/O口(GPIO,定义I/O口的方向,使用方式,以及高低电平的定义),异步串行接口(UART,用于数据串行传输,需要定义时钟和波特率),定时器(TIMER,用于计数产生中断),脉宽调制器(PWM,等效正弦波输出),数模/模数转换(A/D,D/A),看门狗(WATCHDOG,用于防止程序锁死)

②读取数据

读写器收到来自标签的信号经过外围电路放大判决后送入单片机,单片机设置其中若干引脚为捕捉功能,其用途是捕捉每一次电平的跳转,于此同时定时器计数,记录两次跳转的时间间隔,这样就可以知道每次高低电平的时间长短(脉宽),根据相关协议经过换算就可以知道这是数据0还是数据1,或者是无效数据。将数据翻译好了以后就是来自标签的响应,根据标签不同的响应做不同的处理。

③写入数据

读写器的主要目的就是读取来自标签的信息,然后传输给后台服务器进行处理,这之中就需要将读到的数据写入单片机的缓存中。写入数据不仅要考虑准确性,还要考虑效率,比如之前已经写入的标签信息之后再次读到时忽略此次写入,不再改变原有信息。

④发送数据

读写器发送的数据主要是命令。系统开始工作时,读写器每隔一段时间发送一次读卡命令,直到有标签响应,读写器读到响应之后根据不同的情况改变发送的命令,通过冲突仲裁等手段最终正确读到所有卡的信息。

⑤数据编码

上文提到,协议采用的是曼彻斯特编码,当命令形成以后需要通过外部设备形成曼彻斯特编码再到外围电路处理。

⑥循环冗余校验

无线通信中一个很大的问题是误码。由于数字信号的传输需要加载在模拟信号上通过空间电磁场传播,数据的正确性会受到发端的调制和放大模块,信道与收端的放大解调模块的影响,最终收到的数据有可能不正确,使用不正确的数据将会影响整个系统的正常运行。因此工程上在每一段数据后面加上一段校验码,接收方通过校验码来判断接收的数据是否正确以作下一步处理,通过牺牲数据空间效率的方式提升正确率。数据校验的方法很多,最简单的比如奇偶校验,可以检测出奇数个误码的情况。CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式。在嵌入式软件开发中,经常要用到 CRC 算法对各种数据进行校验。循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为 N位,因此,这种编码也叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。 校验码的具体生成过程为:假设要发送的信息用多项式C(X)表示,将C(x)左移R位(可表示成C(x)*2R),这样C(x)的右边就会空出R位,这就是校验码的位置。用 C(x)*2R 除以生成多项式G(x)得到的余数就是校验码。生成多项式的概念:是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。在发送方,利用生成多项式对信息多项式做模 2除生成校验码。在接受方利用生成多项式对收到的编码多项式做模 2除检测和确定错误位置。应满足以下条件:A.生成多项式的最高位和最低位必须为1。B.当被传送信息(CRC码)任何一位发生错误时,被生成多项式做除后应该使余数不为0。C.不同位发生错误时,应该使余数不同。D.对余数继续做除,应使余数循环。CRC-16采用的生成多项式一般为0x1021。

CRC-16算法如下:

①如果原来的CRC最高位异或输入是0的话(既CRC最高位与校验的信息位相同),那么结果就是使CRC左移一位;

②如果原来的CRC最高位异或输入是1的话(既CRC最高位与校验的信息位不同),那么结果就是先使CRC左移一位,再异或生成的多项式。

事实上,计算本字节后的CRC码,等于上一字节余式CRC码的低8位左移8位,加上上一字节CRC右移 8位和本字节之和后所求得的 CRC码。如果我们把 8位二进制序列数的CRC(共256个)全部计算出来,放在一个表里,编码时只要从表中查找对应的值进行处理即可。这是一种 CRC改进方法,对于内存的节省很有帮助。

5 结束语

由于RFID技术具有防水、防磁、耐高温、使用寿命长、读取距离大、标签上数据可以加密、存储数据容量更大、存储信息更改自如等优点,已经成为21世纪全球自动识别技术发展的主要方向。本读写器产品可以应用于商贸、汽车、药物、食品、运输、能源、军工等领域,具有广阔的应用空间。

[1] ISO18000-6A/B标准:Information technology automatic identification and data capture techniques-Radio frequency identification for item management air interface-Part 6: Parameters for air interface communications at 860-960MHz.

[2] 蒋泰,高广尚. ISO18000-6 Type C标准中防冲突技术的改进[J].计算机工程与应用,2010,(20):42-45.

[3] 禹士朋.UHF射频识别系统的防冲突算法研究[D].郑州:郑州大学,2010.

Design and implementation of UHF RFID reader

Objective:A multi-tag UHF RFID reader is designed and realized.Method:According to ISO18000-6 protocol of short range communication, data processing is realized based on ARM7 chips and peripheral hardware is designed to make the system workable.Result:The reader can read multiple tags at one time and effectively avoid collision. The data read can be sent to servers for further processing.Conclusion:This UHF RFID reader functions properly and it has a broad application prospect.

RFID; ISO18000-6 protocol; anti-collision algorithm

TP391.4

A

1008-1151(2015)02-0006-04

2015-01-10

蒋冠宇,清华大学在读生。

猜你喜欢
校验码读写器计数器
采用虚拟计数器的电子式膜式燃气表
基于Excel实现书号校验码的验证
计数器竞争冒险及其处理的仿真分析
基于FPGA的循环冗余校验码设计
身份证号码中的数学
基于视频抓拍读写器的高速公路防倒卡研究
三值绝热多米诺可逆计数器设计
基于单片机的仰卧起坐计数器
基于随机时隙的RFID读写器防冲突方法
基于FPGA和NAND Flash的存储器ECC设计与实现