UHF读写器设计中的FM0解码技术
扫描二维码
随时随地手机看文章
RFID(radio frequency identification)技术是指以识别和数据交换为目的,利用感应、无线电波或微波进行非接触双向通信的自动识别技术,利用这种技术可以实现对所有物理对象的追踪和管理。2006年EPC global(全球产品电子代码管理中心)纳入ISO/IEC 18000-6C标准,批准了新标准EPC Gen2,用于900 MHz左右的UHF的RFID技术规范,现在被我国作为第1类第2代UHF RFID 860 MHz-960 MHz通信协议。UHF频段RFID系统具有读写速度快、存储容量大、识别距离远、成本低、尺寸小等特点,更适合未来物流、供应链领域的应用,也为实现“物联网”提供可能。因此超高频RFID系统的发展是当今RFID系统发展的重点。这里所提出的UHF读写器是基于EPC Gen2标准来实现的,阅读器对标签的读写是通过发送射频能量和对回波检测来实现的,其中由标签返回给阅读器数据发送采用FM0编码格式。
1 FMO编码原理
FM0(即Bi-Phase Space)编码的全称为双相间隔码编码。在一个位窗内采用电平变化表示逻辑。如果电平从位窗的起始处翻转,则表示逻辑“1”。如果电平除了在位窗的起始处翻转,还在位窗中间翻转则表示逻辑“O”。根据FM0编码的规则可以发现无论传送的数据是0还是1,在位窗的起始处都需要发生跳变,如图1所示。
根据EPC Gen2协议规定,从标签接收刭的数据都是FM0编码格式,是以前同步码开始的,前同步由2部分构成:前12个前导零与之后的6位特定位。需要注意的是在前同步码中有1位发生了偏移(即应发生相转化但实际上没有),表示为“V”,用于区分前同步码与数据码,前同步码之后为收到的数据,如图2所示。
2 UHF读写器读写原理
根据EPC Gen2标准,该UHF读写器属于半双工通信,遵循读写器先发言(RTF)原则,即标签是否需要返回信号建立在有没有接收到并正确解调出读写器发来的指令。系统开始工作时,先由读写器通过射频模块进行调制,发出一系列的读标签指令,当标签进入读写器响应区域时,接收到射频能量,开始解调读写器的指令,只有正确得到读指令后,标签才会将自己的ID信息等数据通过反向散射方式回发给读写器。读写器将收到的反向散射信号解调成基带信号之后再送到处理器中进行解码处理。
标签主要由射频接口(天线、数据调制、解调、电源电路)、控制逻辑及EEPROM存储器3个模块构成,调制解调模块完成对发送接收信号的调制解调,能量检测电路通过天线线圈接收到电压后给控制中心提供稳定的电压。控制逻辑由冲突检测、读写控制、存取控制、EEPROM接口控制和RF接口控制部分组成,主要负责处理与外部通信协议和与读写EEPROM。
采用高性能的ARM7的LPC2103进行解码,采用12MHz外部晶振,该芯片可内部倍频,内部时钟工作在60 MHz的频率上,完全满足高速下的解码需求。LPC2103有2个32位的捕获比较器,具有多达7路捕获通道。采用LPC2103的定时器TO和相应的捕获引脚,在输入信号发生上跳变或者下跳变时捕获定时器值,并产生中断将该定时器值取出进行判断,其系统框图如图3所示。
3 FMO解码
根据FMO解码的特点,目前常见的解码方法是:根据起始处的上升沿或下降沿以及位窗中的采样点来判断出此位窗所表示的数据。设定一个位窗时间长度为T,1)位窗起始处为下降沿,在该位窗3/4T处采样,采样为1则位窗表示数据“0”,采样为0则位窗表示数据“1”;2)位窗起始处为上升沿,在该位窗3/4T处采样,采样为1则位窗表示数据“1”,采样为0则位窗表示数据“0”。
这种方法的缺点很明显。因为UHF频段频率很高,当在接收过程中会出现频率偏移的情况时,会造成位宽时间T较大的变化,而程序仍以固定的时间间隔3/4T去解码,所以每次都会发生一定的偏移,根据协议,UHF读写器将接收到标签传送过来的1个128字节的数据,这样在解码过程中,将出现累积偏移过多导致漏读或多读情况,从而产生误判。
通过读写器命令设置,可以使标签返回数据采用160 Kb/s的速率,在FM0码相邻两个边沿之间的间隔只可能有3种情况:0.5T、T、1.5T。在12 MHz的外部时钟下,“0”的高半位宽“H”和低半位宽“H”为3.125μs,捕获出的定时器计数值为0x25左右,记为0.5T;收到1个“0”或者1个“1”的位宽为6.25 μs,捕获出的定时器计数值为Ox4B左右,记为T;在前同步码中,“V”的位宽为9.375μs,捕获出的定时器计数值为0x70左右,记为1.5T。解码流程图如图4所示。
根据FMO码特点,当捕获到一个“H”或者“L”时,要判断这个O.5T是“0”的前半位还是后半位。是前半位时,要等待下一个0.5T结合成1个“0”;是后半位时,要与之前剩余的半位结合成“0”。捕获到1个T宽度的数据时,则记为“1”。
在进行对接收到的FMO码解码时,因为没有同步信号,所以必须要先对数据进行同步,也就是要先解码到连续的12个“0”与之后的1010 V1前同步码数据,才能对后面真正需要的数据进行解码。在解前同步码时,前12个“O”按照2个0.5T组成1个“0”的原则,要有连续的24个0.5T出现才会进行下面的解码,不然就会返回重新开始统计12个“0”。在之后解码1010V1时,要注意一个特殊的位“V”,当捕获到一个1.5T宽度的数据时,才记为“V”;在此期间,只要解码出一位有错误,则返回重新开始统计12个“0”。只有前同步码全部正确解出时,才能进行对需要的数据进行解码,依据捕获到的宽度是0.5T还是1T来判断是“0”的半位还是一个完整的“1”。
在EPC Gen2使用中,根据读写器发送命令的不同,标签返回的FM0码里或者存在CRC5,或者存在CRC16,或者没有校验,有CRC的码在解码完成后都要进行CRC校验。当检测到结束位时,CRC校验正确,则本次通信正常,可以进行下一步的通信。
在实际运用中,读写器接收回路上会出现发送回路泄露过来的很多杂波信号以及一些毛刺,会有连续多个“0”出现,会形成连续的24个宽度为0.5T的间隔,可能会误判成前同步码开始,但后续的前同步码解码过程在出现1.5T宽的“V”时会出错,在进行校验或检测停止位时也可能会出现错误,这时也要重新搜索前同步码。
4 结束语
在UHF读写器设计中,关键问题就是对接收到的解调数据进行正确解码,既要解决信号频率的偏移,也要能在高速通信过程中,快速正确解码,采用这种解码方法可以在对FM0码捕获位宽的同时进行同步解码,速度比较快,而且由于对载波频率的变化不敏感,故读卡成功率高。