物联传媒 旗下网站
登录 注册
RFID世界网 >  技术文章  >  其他  >  正文

基于ISO/IEC 18000-6B协议标签逻辑的设计

作者:骆元舒 张春 王志华
来源:半导体技术
日期:2009-11-26 09:51:03
摘要:ISO/IEC18000-6B协议的传输机制是基于“阅读器先发言”的。阅读器到标签之间的数据传输采用ASK调制曼彻斯特(Manchester)编码,调制深度是11%或99%,位速率为10 kb/s或40 kb/s(采用40 kb/s)。
0 引言

  射频识别技术(RFID)是利用射频方式进行远距离通信以达到物品识别的目的,可以用来追踪和管理几乎所有物理对象。RFID系统一般包括阅读器和标签两个部分,按照这两部分通信频率的不同,系统分为低频(135 kHz以下)、高频(13.56 MHz)、超高频UHF(860~960 MHz)和微波(2.4 GHz以上)频段几大类。ISO/IEC 18000是基于物品管理的射频识别的国际标准,按工作频率分为7部分,其中第6部分规定的UHF频段因为适合远距离识别并且对环境影响较小而成为目前RFID产品发展的热点。以下简要介绍了ISO/IEC18000-6B协议的内容,并给出了一种标签逻辑部分的设计方法。

1 ISO/IEC18000-6B协议简介

  1.1 传输机制

  ISO/IEC18000-6B协议的传输机制是基于“阅读器先发言”的。阅读器到标签之间的数据传输采用ASK调制曼彻斯特(Manchester)编码,调制深度是11%或99%,位速率为10 kb/s或40 kb/s(采用40 kb/s)。标签到阅读器之间的数据传输是反向散射调制,即通过调制入射并反向散射给阅读器来传输信息,采用FM0编码,数据速率是40 kb/s。

  1.2 阅读器命令格式

  阅读器与标签以帧为单位进行数据传输。阅读器到标签的一帧通常由帧头探测段、帧头、分隔符、命令、参数、数据和CRC组成,见图1。各部分内容、功能介绍如下。 

  帧头探测段(preamble detect):400μs稳定的未经调制的载波信号,用来给标签充电;

  帧头(preamble):包含9 bit的曼彻斯特码格式0,标志着通信的起始,即:010101010101010101;

  分隔符(delimiter):一定数量、一定格式的数据,作为间隔,为将来的命令扩展做准备;

  命令参数(parameter)和数据(data):取决于前面的命令;

  校检(CRC-16):检验错误,采用标准的16 bitCRC-CCITT。

  1.3 标签的回答格式

  标签以帧为单位把数据传送回阅读器,一帧通常由静默、返回帧头、数据和CRC组成,见图2。以下为各部分介绍。 


  静默(quiet):标签在没有接收到命令之前或者接收到错误的命令之后,始终保持一种静止状态。只有接收到有效的阅读器命令,才返回帧头和数据;

  返回帧头:为一固定数据“00 00 01 01 01 0101 01 01 01 00 01 10 11 00 01”;

  数据:取决于命令以及命令处理的结果;

  CRC采用16 bit的数据编码。

  1.4 工作流程与防冲突机制

  ISO/IEC18000-6B协议支持多枚标签同时工作。多枚标签同时工作时,先用选择或反选择命令选出UID的某些位符合要求的标签(即处于识别状态),之后进入防冲突机制进行冲突处理,随机选出一枚标签,对其进行读写等操作。完成一枚标签的操作后再次进入防冲突,寻出并处理另一枚标签,直到全部操作完毕。

  防冲突机制需要两种硬件电路,一个8位的计数器和一个01随机数发生器。防冲突时,阅读器发命令,所有处于识别状态并且内部计数器为0的标签将发送它们的UID。若这样的标签有一个以上,阅读器发“FAIL”命令,令内部计数器不等于0的标签将自己的计数器加1;内部计数器等于0的标签将加上一个“1”或“0”的随机数,如若仍然为0再次发送它们的UID。这之后有三种结果:处于识别状态并且内部计数器为0的标签多于1,重复前面步骤;处于识别状态并且内部计数器为0的标签等于1,选出了标签;没有处于识别状态并且内部计数器为0的标签,那么阅读器发“SUCCESS’’命令使标签计数器全减1,重复前面加随机数的步骤。这是种基于概率的防冲突机制。

2 逻辑部分设计与低面积方案

  2.1 逻辑部分设计

阅读器与标签以帧为单位进行数据传输,设计的时候则以标签一帧的接收处理直至返回帧结束为一次完整命令。一次完整命令从上电复位或者上一命令结束开始,按照帧的格式,进入400μs帧头探测段,然后从帧头的第一个0中采样取得半bit信息,用于以后的编解码。等确认过帧头和分割符,则进入Manchester解码和相关数据处理的阶段,此为接收帧信号的主要阶段。解码结束如果CRC正确,就可以开始对命令进行相应处理。先进行命令相关的状态处理,同时返回帧的静默。约200μs后,发送返回帧头,进入命令相关的读写数据处理,编码返回值,并加上CRC的结果,最后复位,等待下一命令的到来。图3为按照命令执行步骤而设计的电路结构框图。以下详细说明各个部分。 
 


  上电复位Rst:Rst是刚上电时的异步复位,标签的各种状态初始化,标签一次上电只工作一次。

  命令结束复位Nrst:Nrst为工作中的同步复位。当标签命令接收上有错误(如解码错、CRC错等,指错误命令),或者处理完一次正确命令,都对其中的一些寄存器清零,等待下一次命令到来。

  帧头探测:帧头探测段探测400μs稳定的未经调制的载波信号。探测时进行信号输入Din为1的记数,预设1 M工作频率下400μs。当Din为0时则清零重新开始记数,得到稳定的400 μs。这也可以去除解码错误导致的复位之后还有可能存在Din的剩余部分数据,以避免当成下一次帧头。

  半bit采样:采样为帧头9个01的第一个0的一段,记录其点数到5位的C_halfbit,用于以后的编解码。由于模拟部分进来的时钟会有偏差,设计时并不将半bit理论上12.5个采样点定死。5位C halfbit值从0到31,解码时要求C_halfbit加6不能溢出,所以最多25,是12.5的2倍,即工作频率上限2 MHz。另外解码时要求C_halfbit加5不能大于一个bit的点数,C halfbit至少有6,约12.5的一半,即工作频率下限为0.5 MHz。

  确认帧头和分割符:帧头和分割符是固定值,根据C_halfbit点数设定电平变换范围和次数。如果出错,进入Nrst,复位重新开始下一命令。Manchester解码:曼彻斯特码以0到1二位表示传输值零(图4中11~13),以1到0二位表示传输值1(图4中13~15),其特点是一位码中间(如12和14处)必有0与1的跳变。解码时从跳变处开始计数,在C_halfbit值加5与2倍的C_halfbit加6之间,若是出现Din与上一个时钟的Din不同,则说明有变号,也就是说解码成功,码值为上一个Din的值。如图4中13~14那一段,为1解出传输值1然后重新开始记数解下一码。若是记数超出上面的范围,那么认为解码错误,进入Nrst。至于第1位码,它前面是分割符,从分割符“1100111010’’的最后一个0起始处开始解曼彻斯特码即可。解码的同时判断Cmd、Add1(解码时用)、Add2(编码时用)、Byt等,并将相应内容存下来,在需要与EEPROM比较时进行实时比较。全部解码值随解码的过程都送入CRC,到设定的判定条件进行判断,正确的话继续进行下一步,错误则进Nrst。 


  多种状态处理:多种状态处理是指标签的4种工作状态之间的转换(断电、准备、识别、数据交换)、防冲突时用的8位记数器、随机数的处理以及退出到Nrst等。根据命令以及当前标签状态,会有多种不同的结果,决定后面数据返回的形式及有无。

  静默与返回帧头:CRC正确后,在处理各种状态的同时,标签进入返回信号的静默状态。这里开始使用一个记数器,从0到C_halfbit一个周期,以这样的一个周期执行一次操作,相当于用了一个比较精确频率80 kHz的新时钟。静默约200μs以后返回固定的帧头。

  FM0编码返回与CRC:FM0编码如图5,编码时设计一个反相器,01翻转,0的时候让输出变号,1的时候根据码值变号,即码值0输出变号,码值1输出不变。在编码返回值的同时根据需要完成对EEPROM的读写操作。最后加上翻转了的CRC值。 


  2.2 设计中采用减少面积的方案

  2.2.1 命令分类

  不同命令在收、发、状态处理阶段都作了分类,命令有8个选择/反选命令、FAIL、SUCCESS、INITIALIZE, RESEND、 READ、DATA_READ、WRITE、LOCK和自己加的命令代码为“10”的CHIP_ERASE。

  在接收信号时,按信号中有没有值与EEPROM比较、与EEPROM中UID还是给定地址比较分类;存Add1、Add2、Byt时,按有没有存储需求分类;用CRC判断正误,按应该接收的长度分类;在状态处理时,按状态操作的相似性分类;在发送信号时,按发送固定值还是EEPROM中值、EEPROM中UID还是给定地址值分类;判断CRC开始与结束,按发送的长度分类。比如8个选择/反选命令,在接收信号与发送信号时是相同的操作,只有状态处理不同。

  2.2.2 实时处理

  在接收与发送信号的过程中,有比较多的命令有一次性的比较或读取值,设计中采用了实时处理避免存储这些信号。接收信号时,解码一位,送入CRC校验一位,并根据命令分类,到达比较条件时比较一位,然后留下比较的大小,舍弃该位。发送信号时,也是逐位读取逐位发送,并送入CRC,舍弃该位。

  2.2.3 资源共享

  设计中比较多地应用了资源共享,以减少硬件,如编码解码CRC不同时间下的共享、地址寄存器和数据寄存器在不同命令下的共享、信号接收时所有64 bit比较的共享|返回帧新时钟的共享等。下面说明地址寄存器、数据寄存器的共享与64 bit比较的共享。

  标签一次只处理一个命令,所以地址寄存器、数据寄存器可以进行不同命令下的共享。地址寄存器Addl存接收时给EEPROM的地址,在Nrst或Rst时清零,选择/反选命令时存下新地址。Addl存下新地址,则读取的为新地址下的值;Addl未存新地址,那么命令不是选择/反选命令,由于帧开始时的清零,读取的为UID。地址寄存器Add2存发送时给EEPROM的地址,同样,存下新地址则读该地址值,未存时则由于清零读取UID。数据寄存器Byt在WRITE命令时存要写的值,选择/反选命令时存用于比较的掩码。

  64 bit比较的共享指接收时所有要求比较的命令下的共享。比较时设计了一个大于与一个小于的标志,只要有一个标志置位(值为1),表明比较已出结果,结束比较。在未出结果的情况下,进行一位的比较,并根据结果改变大于与小于标志,如果相等,则不改变,等待下一次比较。根据大于与小于两个标志,可以得到状态处理时用的等于、不等于、大于、小于这4个值。

3 设计结果

  3.1 FPGA功能验证

  将代码下载到FPGA板上输入测试信号,在逻辑分析仪中查看波形,如图6,Bus1_0为输入,Bus1_1为标签的返回信号。Bus1_1根据Busl_0不同而做出相应不同的反应,并且能屏蔽返回值时可能有的Busl_0信号,如第二、四帧不做处理(处理一、三帧中)。图7与图8为接受信号与返回信号的起始处放大图。 

  3.2 规模与功耗

  本设计用DC综合,在SMIC 0.18 μm工艺下cell数为837个(其中寄存器约160),总面积为24 791μm2,以最小与非门9.98μm2估算,约2 500门。

  用Primepower对仿真进行功耗分析,在读与写操作时都约为10.6 μW。功耗集中在时钟上,从SMIC 0.18 μm工艺文档中得测试频率下面一个典型寄存器时钟翻转产生约0.032μW,乘上个数约160以及2(一个时钟二次翻转),约10.2 μW,与仿真软件结果相近。

  3.3 版图

  自动布局线设计的版图如图9所示,有三个输入,分别为Clk、Din、Rst,一个输出为Dout。版图通过了DRC(设计规则检查)和LVS(版图与电路图一致比较),正在流片中。 

4 结语

  本文基于ISO/IEC 18000-6B协议设计了标签的逻辑部分,并运用命令分类、实时处理、资源共享等技术减少资源,在SMIC 0.18 μm工艺下综合生成电路面积约24 791 μm2,约2 500门,功耗10.6μW,工作于1 MHz附近(0.5~2 MHz)。电路在面积、规模上比较小,但功耗比较大,与国外目前较低的0.318 μW还存在不少差距,用门控时钟技术以及设计低功耗器件以减少功耗是以后的目标。