基于FPGA的超高频读写器设计
射频识别(RFID)是一种非接触的自动识别技术,它利用天线来传输射频信号,利用空间耦合实现非接触供电,并进行非接触双向数据通信,而达到自动识别目标并交换数据的目的。与传统的条形码识别方式相比,射频识别技术能对移动的多个目标进行识别,而且还具有条形码所不具备的防水、防磁、耐高温、使用寿命长、读取距离大、数据加密等优点。因而RHD技术广泛应用于交通运输、物流管理、门禁系统等众多领域。相对而言,UHF频段的发展远没有低频和高频段成熟,而UHF频段的读写距离远和更快的读取速度让其在国际物流、公路自动收费等领域有着独特的优势,目前已成为RFID技术应用的一个主流发展方向。
1 读写器的整体结构
本文提出的基于物流管理的读写器工作在UHF91 5MHz频率下。FPGA是大规模可编程器件中的另一大类PLD(programmable logic device)器件,既继承了ASIC的大规模、高集成度、高可靠性等优点,又克服了普通ASIC设计周期长、投资大、灵活性差的缺点,逐步成为复杂数字硬件电路设计的首选。奥地利微电子公司的AS3990射频收发器产品适用于UHF频段,针对便携、固定、近距或远距应用进行了个性优化,多种产品可采用同一种软件接口。它是一款高度集成的UHF读写器芯片,包括AFE、数据帧、编码/解码,支持MCU和电源管理,支持密集读写模式,天线驱动用OOK、ASIC或PR-ASK调制,创新化的双输入接收器可以消除通信盲区。该芯片是64引脚QFN封装,并支持目前业界最低功耗BOM(Bill of Material,物料清单)的解决方案,所以是讲究功耗成本的应用首选。AS3990继承了EPC Classl Gen2(ISO 18000-6C)协议引擎,其高速的数据处理能力可以完成发送和接收数据帧的处理,而且在Direct Data Mode模式下还可以实现ISO 18000-6A和ISO 18000-6B协议。为了减轻处理器的工作负担并保证稳定的数据流以及正确的协议处理,AS3990采用了一个12字节的FIFO寄存器来管理数据帧。内置的可编程选项可以使它适合于UHF频段里的所有应用,还可以直接进入其内置控制寄存器对各种读写器参数进行微调。
读写器RF前端采用零中频接收结构。由频率合成器产生所需要的RF信号,然后经过功率分配器得到两路载波信号,分别用于发送通路和接收通路。发送通路采用OOK调制,基带信号通过开关通断控制载波是否经过功放,并用天线发送;接收通路中接收信号先经过功率分配、放大等操作,然后分别送到混频器和两路正交的载波信号进行混频,对混频之后的信号经过滤波、放大等操作恢复出数字基带信号。该系统之所以采用两路正交混频结构,主要是为了避免射频场中存在接收盲点。如果只采用一路接收信号,当接收信号的相位和本振信号的相位相差90°,混频后的信号始终为0,即有用信号没有解调出来。但采用正交I和Q两路接收信号,无论相位延时多少,I和Q中总有一路能解调出有用信号。
AS3990芯片与控制器之间的接口可以采用串行数据接口,为了采用较高的传输速率时也可以采用并行接口。本设计采用FPGA与AS3990芯片的并行连接通信,AS3990的IO0-I07、IRQ、CLK、VCC,CLSYS接口与FPGA相连接,如图1所示,其中IRQ为中断,IO0-I07为数据的双向并行口。芯片内部有32个寄存器用来实现其传输协议和监测工作状态,通过对内部寄存器的设置,来控制芯片的传输模式、调制方式、传输速率等。在常规工作模式下,即支持ISO 18000-6C标准,传输数据的编码与解码,CRC校验码的生成和校验都是在芯片内部完成的,还有自动产生帧同步、引导码,将从MCU传递的数据转换成数据帧格式后再发送,且发送和接收都是通过FIFO寄存器传输的。而在直接数据模式下,数据的编解码和CRC校验码的生成与校验都在芯片外部实现,而且发送和接收只能直接地、无缓冲地从FIFO中输出码流,可以用该模式来实现ISO 18 000-6B、6A协议等。
2 读写器数字基带部分设计
数字部分由控制器、存储器组成,主要完成命令信号的发送和数字逻辑的控制,并且实现与PC机的通信和对RF模块的控制。
2.1 RF部分初始化
该部分主要是完成对AS3990芯片内部寄存器的配置。
芯片上电复位以后,配置寄存器初始化为其默认值,使芯片可以在EPC Class1 Gen2协议下工作,但为了使芯片的工作性能达到最优化或者实现ISO/IEC18000-6A、6B协议等,则必须重新配置寄存器的值。主要实现以下内容的配置:
(1)AS3990有两种工作模式,分别支持和实现不同的协议,为常规数据模式(Normal Data Mode)和直接数据模式(Direct Data Mode)。在常规数据模式中,发送和接收的数据是通过内部FIFO寄存器传输的,所有数据的处理过程都是在芯片内部完成的。在直接数据模式中,数据处理是在芯片外部实现的,由控制部分完成,可以利用该模式来实现ISO 18000-6A、6B协议等。
(2)选择系统工作频率。AS3990芯片规定的UHF读写器工作频率是860~960MHz,我们可以根据具体情况和实际应用来设定其工作频率。
(3)设定传输速率,包括读写器到标签的数据速率和标签到读写器的数据速率。其中读写器到标签的比特率范围为26.7~128kbps,标签到读写器的传输速率在40~640kHz之间。
(4)选择编码方式和调制方式。根据协议规定,读写器前向链路采用PIE编码、ASK调制方式。反向链路的编码方式有两种选择,FM0编码和Miller编码方式;调制方式也有两种,为ASK调制和PSK调制方式。其中反向链路调制方式的选择由生产厂商决定。如图2为初始化模块的
仿真图。
2.2 读写器命令
在AS3990芯片内部,已经集成了一些常用到的命令:软件初始化命令(83)、FIFO寄存器复位命令(8F)、带CRC校验的发送命令(90)、Qu-ery命令(98)、QueryRep命令(99)等,在需要使用这些命令时,只要直接调用这些命令码即可。而其他一些没有集成到芯片内部的命令就需要用软件来实现,包括选择命令Select,还有一些读命令Read、写命令Write等。
{$page$}
对于没有集成在芯片内部的命令,就需要用软件来完成其命令格式,不过校验码的产生、命令前导码、命令的编码都在芯片内部完成。图3所示为Select命令的软件发送格式。首先是起始条件(FF),然后是FIFO寄存器复位命令(8F),带CRC校验的发送命令(90);再是命令格式,要发送的数据长度,最后是数据。当数据从微控制器发送给AS3990芯片以后,首先将要发送的数据存入内部FIFO寄存器,加上CRC校验码、前导码,然后将数据经过编码,以数据帧的格式经过调制后发送出去。
对于集成在芯片内部的命令,只要发送命令码,芯片会自动将命令以数据帧的格式经过调制后发送出去。如图4为Query的命令发送格式。
只有芯片的工作模式设置为常规数据模式时,才能使用芯片内部集成命令。在直接数据模式下,所有的命令格式都由控制器完成。
2.3 读写器的防冲突
RFID系统中,多标签引起的冲突是影响系统效率的难题,传统的概率性防冲突算法采用的是帧时隙Aloha算法或动态帧时隙Aloha算法等。但这些算法都存在系统识别效率不高等问题。当标签数远大于帧时隙数时,发生碰撞的时隙数增多,读写器不能完成标签的读取:当标签数远小于帧时隙数时,空闲时隙增多而导致时隙浪费,这些都是导致系统效率不高的根本原因。鉴于以上的弊端,本文提出了一种基于帧时隙Aloha的改进型算法,核心思想是将标签识别分为两个步骤,即冲突检测和数据读取。其中冲突检测是为了检测一个识别周期中的标签发生冲突的情况。数据读取是根据冲突检测的情况,允许无冲突的标签和阅读器完成通信。
通常,在帧时隙Aloha算法中,当系统标签数量变得很大时,系统效率就开始下降。当读写器设置帧的长度(包含的时隙数)为Nt,响应的标签数为n时,则有r个标签选择同一个应答时隙的概率服从二项分布.
因此,当r=1时表示标签选择无碰时隙的概率。在一个周期中预期成功读取的标签数
系统效率的计算公式如下:
系统效率=一个周期中预期读取的标签数/当前的帧的长度=N/N,
从上式中可以计算出系统效率的最大值的位置。从而可以推导出,当帧的长度为Nt时,效率最高的标签响应数为:
从上式可以得出,当标签数和帧时隙长度大体相当时,系统效率将变得最大。与图5所示一致。
为使系统效率最高,必须使帧时隙数等于参与循环的标签数。每帧时隙数可以根据标签数的变化及时调整,使得标签数量与帧时隙数匹配。在开始一个新的循环时,读写器要对参与循环的标签数进行估计,如果所估计的标签数与实际情况相差甚远,那么算法的效率就会发生大幅的下降。通过对上一个周期通信所获取的空的时隙数、发生碰撞的时隙数和只有一个标签传输数据的时隙数来估计标签的数量,由估计的标签的数量来及时调整下一帧的长度。由于当外围标签数量与帧时隙数偏离较大时,系统效率会急剧下降,所以通过帧时隙改进型算法能够把系统的效率控制在34.6%~36.8%范围内,从而大幅提高了系统的识别效率。在实际的RFID系统中,被正确识别的标签将不再响应读写器发送的数据传输请求,同样,成功传输数据的标签也不再响应读写器的请求。因此前一帧中没有被识别的标签数为N=2.93c。其中c表示发生碰撞的时隙数。通过对未识别的标签数进行估计,选择最佳的帧时隙长度,从而使每个循环周期中响应标签数与帧时隙数相匹配,从而大幅度提高了系统的效率。
3 总结
本文选用FPGA芯片与AS3990射频收发芯片设计并实现了远距离UHF RFID读写器,标签识别距离达到3~4m,已基本满足应用要求。并提出了一种帧时隙Aloha防碰撞的改进型算法。通过动态地调整帧时隙数与外围标签数相匹配,使读写器系统的读取效率维持在34.6%~36.8%范围内,大幅度提高了系统的读取效率。