一种RFID标签芯片数字部分状态机的设计
射频识别(RFID-Radio Frequency Identification)系统有着较大的数据容量和较快的读写速度,并且受环境影响小,与接触式IC卡系统相比,由于没有机械触点,不存在触点腐蚀和污染的问题,因而一诞生就备受重视,在银行信用卡、货物销售、仓储管理等方面获得了广泛应用。
一个典型的RFID系统由阅读器(VCD-Vicinity Coupling Device)、电子标签(VICC-Vicinity Integrated Circuit card)及计算机三个部分组成。电子标签的功能是储存有关物体的数据信息,阅读器的功能则是通过射频信号自动识别目标对象电子标签并获取相关数据。本文所介绍的符合ISO/IEC15693标准的RFID系统,阅读器和电子标签之间的载波频率为13.56MHz,采用半双工的方式通讯,配合适当的天线其有效作用距离为0~1m,理想情况下可以达到1.5m,具备抗冲突能力。
目前,VICC的数字部分的控制器有两种:嵌入式CPU和状态机。嵌入式CPU设计较为灵活,能实现较为复杂的加密算法,但是功耗较大、成本高;而状态机则功耗低、成本低,因而在注重功耗和成本的RFID市场获得了广泛应用,也为本文所采用。
1 VICC数字部分的构成
VICC数字部分的组成模块如图1所示。包括脉冲位置解码模块、接收CRC校验模块、CRC产生模块、状态机模块、编码和调制模块、EEPROM和时钟分频模块。脉冲位置解码模块接收从VICC模拟接口输入的来自VCD的数据,并将解码数据输出至接收CRC校验模块和状态机模块。接收CRC校验模块对数据进行CRC校验。状态机模块对输入数据进行处理,如读写EEPROM、防冲突控制等,处理完成后则将要发送的数据送至CRC产生模块产生相应的CRC校验码,然后将要发送的数据和校验码一起送编码和调制模块,经处理后由VICC模拟接口发送至VCD。时钟分频模块则将输入的13.56MHz的频率分别进行四分频和三十二分频。分频后的频率分别交由数字部分其它模块使用。EEPROM存储电子标签的数据信息。
2 VICC状态机的实现
VICC数字部分的关键是状态机,它是实现VICC功能的核心。VCD命令的处理、EEPROM的读写控制、数字部分各个模块之间的协同工作,都离不开状态机。
2.1 VICC状态描述
根据ISO/IEC15693标准,VICC有四种不同的状态:Power-off、Ready、Quiet和Selected。其中,Selected是可选择的。每一个VICC在同一时间只能处于一种状态,不同状态的VICC对同一命令的响应是不同的。图2是VICC的状态转移图。
VICC没有进入VCD的场工作范围时,VICC处于Power-off状态;进入VCD的场工作范围时,VICC通过天线感应能量而启动,进入Ready状态;在VCD场工作范围内,VICC根据VCD发出的命令进行相应的命令响应和状态转移;VICC移出VCD场工作范围时,不论VICC当前处于什么状态,由于没有能量供应,它都将进入Power-off状态。
2.2 VCD和VICC之间的通讯协议
VCD和VICC之间的通讯遵循VCD先说的原则,也就是VICC并不主动向VCD发送数据,只有当它接收到VCD命令并响应时,它才向VCD发送相应的数据。
VCD向VICC发送命令的格式如图3所示。SOF表示帧头;Command为命令码; Flags为该命令所携带的标记位,如Select_flag、Address_flag等;Parameter为该命令的参数;Data为该命令所携带的数据;CRC是校验码;EOF表示帧尾。
VICC响应VCD命令并向VCD发送数据的格式如图4所示。SOF表示帧头,Flags表示该响应处理正确与否的标记位。Parameter为该响应参数,Data为该响应所携带的数据,CRC是校验码。EOF表示帧尾。
2.3 VICC状态机实现流程
VICC共有四种状态,因而其实现程序应对各种状态分别处理。Power-off状态表示VICC没有上电的情况,程序中不需要对此状态进行处理。根据VCD和VICC之间的通讯协议,VICC在Ready状态下对VCD命令响应的工作流程如图5所示。在其它两种状态即Quiet和Selected下,对VCD命令的响应也是类似的。图5中,符号①表示倘若当前状态不是Ready状态,则进入Quiet或Selected状态下对命令进行处理。
2.4 防冲突处理
当有两个或两个以上的VICC同时处于VCD场区时,则多个VICC响应VCD命令可能产生冲突。当VICC状态机给VCD发送相应命令的回复信息时,数据经编码和调制模块处理后便串行发送至VCD。在编码和调制模块,VICC对要发送的每一位数据进行曼彻斯特编码,上跳沿表示数据“1”,下跳沿表示数据“0”。当冲突发生时,即在同一时间段,一个VICC发送数据“1”,另外还有某一个VICC发送数据“0”,这两个信号在VCD上叠加,使VCD在这一时间段接收不到跳变沿。从而判断为发生了冲突。这时VCD将发送防冲突命令Inventory。
当VICC收到Inventory命令时,状态机进入防冲突处理。状态机先将当前的时间片和Inventory指令中的掩膜值串接,所得到的位再和VICC唯一ID值对应的位相比较,如图6所示。
倘若时间片和掩膜值串接后的位和VICC唯一ID值对应的位一致,则VICC响应该VCD命令,返回VICC的唯一ID值和数据存储格式的ID值,反之,则不响应。在防冲突处理期间,若VICC接收到EOF,则将时间片加1,并进行相同的比较处理。若接收到其它命令,状态机退出防冲突状态。
2.5 错误处理
当VICC接收到CRC校验错误的命令时,VICC状态机放弃该命令,对该命令不予响应。当VCD向VICC发送的命令格式不正确,或是读写的字块超出了VICC的最大值范围时,VICC状态机返回相应的错误代码,通知VCD发生了错误。VCD可根据错误代码判断错误类型。
3 系统的仿真波形与FPGA实现
ISE6.1是Xilinx FPGA/CPLD的综合性集成设计平台,该平台集成了设计输入、仿真、逻辑综合、布局布线与实现、时序分析、芯片下载与配置、功率分析等几乎所有设计流程所需的工具。本文在ISE6.1环境下编译、仿真和下载。
图7为状态机接收到一个读字块命令后读EEPROM时的仿真波形。Clk_fc4是状态机的工作频率,为了节省功耗,状态机的工作频率采用四分频的载波频率,也就是3.39MHz;Command_reg是状态机接收到的命令寄存器信号,20表示读一个字块命令;Flag_rec_reg是状态机接收到的标志位寄存器信号,20表示Address_flag为“1”,其它标志位都是“0”;Ee_rw是EEPROM读写控制信号,“0”表示读EEPROM,“1”表示写EEPROM。Ee_en表示读写EEPROM使能信号,高电平有效;Ee_addr是读写EEPROM的地址信号。Ee_data是读写EEPROM时的数据信号。Ee_rw_end是输入信号,通知状态机,读写EEPROM结束,高电平有效。由于一个字块为32个位,即四个字节,所以状态机在读一个字块时,Ee_en信号应四次有效。
程序采用Xilinx Spartan-3系列X3S200芯片进行综合下载。综合后共占用771个slice,34个IOB,系统最快运行速度为79.038MHz,远高于状态机的工作频率3.39MHz,满足VICC状态机的时序要求。
本设计应用于符合ISO/IEC15693标准的RFID标签芯片的数字部分,具有可靠性高、结构简单等特点。由于其它标准的RFID标签芯片的数字部分功能与ISO/IEC15693 RFID标签芯片较为类似,因此,对状态机部分做适当的修改,可应于其它标准的RFID标签芯片。