孟秋云,殷宪祯,徐 鹤,2
(1.南京邮电大学 计算机学院,江苏 南京 210023;2.江苏省无线传感网高技术研究重点实验室,江苏 南京 210003)
射频识别(radio frequency identification,RFID)是利用无线电波和电磁场自动读取标签上存储的信息,这些标签附着在物体上进行识别。射频识别(RFID)是由射频标签、读写器和天线组成[1]。无源RFID标签提供了许多吸引人的功能,包括远程和无触碰接入、低成本、无电池和高识别效率。在RFID标签识别系统中,读取电子标签的信息是射频识别技术主要的发展趋势。射频识别系统在不同的行业中有着不同的应用,比如:畜牧业、身份识别、电子票务、高速收费、物流和公安等领域[2]。射频识别是一种不需要接触,在电磁场中根据频率去自动识别的新型技术。
在射频识别系统中,标签可以是主动式、电池辅助式或被动式。无源标签没有电池,而是利用读写器发射的无线电能量来激发信号传输,因此价格低廉,生产和使用规模较小。因此,它被广泛应用于各个领域,包括图书馆资料管理作为RFID标签的主要类型。RFID标签也可以按其频带(LF/HF/UHF)进行分类。低频和高频的标签数据传输速度慢、存储的电子标签的ID比较少,同时,它们需要的天线的匝数比较多,因此也带来了成本较高这一缺点。超高频存储的电子标签的信息量也比较大,最重要的是,超高频的ID号是全球唯一的,因此,安全性比较好。在现有的研究中,关于低频和高频的研究已经非常深入,但是对于超高频的研究还处于滞后的状况。在现有的研究中,可以发现超高频的射频识别系统中电子标签信息存在着漏读的现象比较严重,对于标签的准确性是没有保障的,这也严重阻碍了超高频射频识别技术在各个领域的发展,因此,国内外对于提高超高频标签信号读取的准确率进行了大量的研究。
超高频射频标签是通过电磁波反射进行工作的,超高频射频标签的工作原理源于雷达模型。在射频识别通信系统中存在发送频率、接收频率和基带频率,这些频率的范围是不一样的。射频识别系统的工作流程是,读写器向RFID标签发送一个信号,此时RFID标签就会向读写器返回一个响应信号,而这个响应信号中携带了RFID标签的信息[3]。RFID标签接收到读写器发送的信号,这信号中包含了读写器发送过来的调制的载波信号和没有被调制的载波信号。RFID标签响应读写器是将标签载波能量分为两个部分,一部分载波能量转换成为标签电路电流的直流电压;另外一部分载波能量是用来将射频标签调制并信号反射到读写器中[4]。
软件无线电的基本结构包括数字上转换和数字下转换。这些模块可以很好地替代过去的数字接收设计。由于传统的固定式和嵌入式无线通信系统已不能满足无线通信中频率变化的需求,所以对无线通信系统提出了更高的要求。过去软件无线电的物理层和数据链路层一旦被设计出就很难再去改变,因其物理层和数据链路层是由硬件设置的。针对这一缺点,在软件无线电体系结构中进行了重新开发。现在的物理层和数据链路层是可以通过软件控制的,这相比于过去的软件无线电来说是通信领域的一大发展。在射频识别通信系统中存在发送频率、接收频率和基带频率,那么这些频率是通过软件无线电的射频前端、ADC和DAC进行转化的。射频前端是用来发射或者接收信号的。射频前端发送数据是将数字信号经过DAC转换成模拟信号将其发送出去。射频前端接收数据是传输的模拟信号经过ADC变换成数字信号。数字信号经过计算与处理可以得到所需要的射频标签信息。
GNU Radio是一个免费开源的软件开发工具,它提供信号处理模块来实现软件无线电[5]。它可以与USRP等SDR硬件一起创建软件无线电应用程序,也可以不使用硬件来模拟无线电系统的环境。为了提高开发效率,GNU Radio软件内部提供了很多信号处理模块,如调制解调模块、仪器模块、信道模块、滤波模块、FFT转换模块、时频同步模块等[6]。编程者可以通过C++来编写所需要的程序模块。将硬件设备USRP与软件GNU Radio相结合可以为软件无线电通信提供一个高效和灵活的原型系统[7]。对于这个原型系统进行设计,调节功率来模拟超高频RFID系统的读写器。
因此,该文基于硬件设备USRP和软件GNU Radio设计与实现了一个GU-RFID的平台,通过这个GU-RFID平台,可以采集超高频RFID标签的信号,对于该信号进行信号处理。将利用GU-RFID平台去开展阅读器的测试与信号ASK的调制工作。
GNU Radio是Eric Blossom发起的开源免费的软件电项目。技术人员和用户可以共享其开发成果。GNU Radio软件是由流图和模块组成的。每个模块都有out端口和in端口,如果只有out端口的就是信源模块,如果只有in端口的就是信宿模块。每一个流图都有信源与新宿模块。
1.1.1 GNU Radio平台介绍
GNU Radio软件的各个模块是由C++语言编写的。在一个流图中,各个模块都有in和out端口,可以根据设计的流图将对应模块的in和out通过Python语言编写的程序进行连接。将流图的各个模块连接后,运行程序[8]。GNU Radio软件自身有很多信号处理模块,可以满足RFID通信系统的不同需求。GNU Radio软件中包含很多信号处理模块,比如:信号的调制解调器、信源的编码与解码、信道的编码与解码以及一些滤波器的设计等模块。
GNU Radio软件中的信号处理模块包括调制、解调、滤波、FFT、同步等模块,用户可以直接调用这些模块,以完成各种功能和任务。GNU Radio使用非常高性能的优化了一些模块的增强指令集[9]。在GNU Radio中,流程图基本上是用Python编写的,而流程图的组件称为块,主要是用C++编写的。Python编程提供了干净而简单的接口,可以将一个块连接到另一个块;但是Python代码没有针对快速执行进行优化。GNU Radio中的模块包括从简单的数学运算到复杂的数字滤波、信道编码和许多其他通信应用。GNU Radio的开发过程为GRC(GNU radio companio)提供了一个类似Simulink的图形工具,内置的信号处理模块库将每个模块连接起来,构成一个完整的系统[10]。GUN Radio软件的平台架构如图1所示。
图1 GNU Radio平台架构
1.1.2 GNU Radio调试
如果在系统Linux上,就选择安装软件GNU Radi来运行,同样如果USRP连接在Windows系统上的时候,就需要在Windows上安装LabVIEW软件来操作。因此,选用不同的操作系统,对应所要安装的软件是不同的。该课题所选用的是在Ubuntul系统上安装GNU Radio。使用的Linux系统版本是Ubuntul16.04,GNU Radio安装的版本是GNU Radio3.7.11。安装完成后,可以在Ubuntul系统中打开终端,并在终端输入命令:sudo gnuradio-compagin,就可以打开GNU Radio的图形化界面(GRC)。
USRP是一种通用无线电外设,是无线电系统的射频前端,主要的产品由Ettus Research开发[11],用于从接收天线捕获和数字化射频信号。软件GNU Radio软件连接硬件USRP时,需要手动安装UHD(universal hardware drive)驱动包。UHD驱动包要与GNU Radio软件版本保持一致的情况下,才能够连接硬件USRP。UHD不仅为USRP提供了硬件驱动,还为用户提供了主机驱动和API,用户可以独立使用USRP。USRP是由可以编程的FPGA的母板和不同频率不同通信方式的子板组成[12]。母板包括FPAG、ADC/DAC等多种接口。ADC主要完成模拟信号向数字信号的转换,可以通过处理数字信号得到所需要的RFID标签的信息。DAC主要是完成将基带信号向中频信号的转换,可以实现快速的数据传输。每一个硬件USRP都要配子板,而对于子板的选择,主要是对子板的射频频率范围和通信方式进行选择。在RFID通信系统中,无线电外设USRP对于射频标签的信号进行采集和处理,而在PC端,编程者软件编程可以合理地配置计算机的资源[13]。
由USRP和GNU Radio组成的软件无线电平台,具有如下特点[14]:
(1)节约成本。GNU Radio软件在开发的时候是可以满足不同格式的通信要求,对于同一硬件就不存在更换的情况了。
(2)技术门槛低。GNU Radio软件中已经存在许多相关的标准库。程序员可以根据自己的需求去设计GNU Radio软件中的处理模块,并用C++进行编写,而Python程序可以用来连接设计的C++的模块将其导入模块库中。所以,用户可以根据自己的课题要求去用C++语言设计新模块,用Python程序去将这些模块以流图的形式连接起来。
(3)开源和免费。程序员可以在GNU Radio论坛中获取源代码,也可以在提供的源代码中去设计自己所需要的模块。
1.2.1 USRP母板
USRP母板在整个USRP设备中占有重要地位。USRP可以完成射频前端与PC端的连接。它是完全开放的一个硬件平台,硬件设备USRP是由可以编程的FPGA和进行模拟信号与数字信号可以转换的ADC或者DAC组成的[15]。对于可以编程的FPGA,可以设计不同的USRP系列的不同产品。USRP母板的基本结构如图2所示。
图2 USRP的基本结构
1.2.2 USRP子板
USRP子板的选择主要根据所需要的频段和通信方式进行。子板的作用主要是将低频信号上变频较高频信号进行输出,或者是将输入的高频信号下变频为低频的基带信号。在同一个母板中,可以通过更换子板来满足所需要的条件。USRP的母板上有4个插槽,这4个插槽分别用来插入2块TX子板和2块RX子板。USRP的子板的选择主要由所需要的RFID标签的频率范围和与阅读器之间通信的方式决定的。该课题选用的射频收发子板-SBX,频率覆盖:400~4 400 MHz Rx/Tx,最大信号处理带宽:40 MHz、120 MHz,可提供100毫瓦的输出功率和5 dB的噪声系数。SBX分别用于接收和发送通道,也可以用于双频段操作。
射频识别技术就是在没有任何接触的情况下去读取标签的信息,并对标签的信息进行存储。
RFID的工作原理是标签进入阅读器磁场空间后,阅读器发射特定的频率信号,将电子标签内部的数据发出,同时阅读器就可以依次接收数据并对数据进行应用程序的相应处理。RFID系统主要由阅读器、电子标签和天线三部分组成。电子标签主要用来存储身份(ID)信息。阅读器是由收发模块、控制模块和天线三部分组成,主要是用来接收标签信号并响应标签。
RFID超高频读写器系统平台主要由后台处理机(PC机)、硬件设备(USRP)、天线三部分组成。通过搭建的RFID超高频读写器系统平台来实现与无源超高频标签之间的通信。设计的USRP射频模块将发射特定频率调制和DA转换后的电磁波实现RFID读写装置,并将查询信号通过空间发射出去,RFID标签接收到查询信号后(Query查询命令),向RFID读写器发送RN16,读写器接收到RN16,再向RFID标签发送ACK应答指令,标签接收到应答指令,会向阅读器发送标签信息(EPC等信息)。
USRP接收到标签发送的反向散射信号后,通过千兆网线传送到PC机进行信号处理,并将处理后的结果通过GUI界面显示出来,如图3所示。
图3 RFID 系统构建
2.3.1 安装环境测试
检测USRP设备,在此操作系统界面下,打开终端输入uhd_find_devices查看硬件USRP是否成功连接,如果可以查找到USRP的地址,说明硬件已经成功连接上。接着在终端中继续输入接收此信号的指令:sudo uhd_fft -f 900M。实验结果如图4所示。
在USRP设备的接收功能检测中,在中心频率为900 MHz处频谱变化,说明USRP能正确接收900 MHz的信号。对于GU-RFID平台中的硬件USRP与开源软件GNU Radio进行了详细的介绍,为下面的超高频RFID的阅读器测试和ASK的调制打下了平台基础。
2.3.2 RFID阅读器测试
GU-RFID平台的阅读器由一台笔记本电脑、一台USRP N200(SBX子板)和两个圆极化天线组成。RFID阅读器频率工作范围为902~920 MHz,两个天线连接在USRP设备上,一个天线负责发送阅读器命令,另一个天线负责接收标签的反向射散信号。
图4 USRP设备的接收功能检测
在GU-RFID平台上启动RFID阅读器。RFID阅读器开始发送查询命令,与在阅读器识别范围内的标签进行通信。GU-RFID平台对标签的反向射散信号进行分析处理,将读取到的标签个数和标签的EPC等信息显示在屏幕上,如图5所示。
图5 GU-RFID平台显示读取的标签
通过GU-RFID平台,采集RFID的信号,如图6所示。在GRC中按照ASK调制的实现原理,把相应的信号处理模块连接起来。首先,在RFID的信号中加入高斯白噪声,将两者相加,然后将相加的信号与高频载波信号进行相乘就可以得到想要的ASK信号。接着对于得到的ASK信号进行相干解调法。对于得到的ASK信号进行带通的信号处理,然后与原始的高频载波信号进行相乘,对于相乘的信号进行低通滤波的处理,将处理后的数据类型由复数转换为浮点数,最后确定恢复由脉冲取样电路调制的原始信号。这是在与USRP相连接的开源软件GNU Radio中进行模块的设计来完成原始数字调制信号的恢复。在GNU Radio软件中的信号处理模块有采样速率、数据类型、调制解调类型、中心频率、增益值等等都是可以调整的。在各个模块之间可以分别点击模块中的in和out进行模块间的实时连接。在GRC界面中实现ASK。其中,图7为ASK调制的流图,图8为ASK调制的波形和频谱图。
图6 USRP接收RFID信号
图7 ASK调制流图
图8 ASK调制的波形和频谱图
基于硬件USRP与其开源软件GNU Radio相结合,设计并实现了一种GU-RFID平台。该平台对研究RFID系统物理层、MAC层性能提供了一个数据采集与分析工具。下一步,将利用构建的GU-RFID平台,研究RFID系统物理层、MAC层性能以及RFID系统的安全性。