孟秋云,殷憲禎,徐 鶴,2
(1.南京郵電大學(xué) 計(jì)算機(jī)學(xué)院,江蘇 南京 210023;2.江蘇省無(wú)線傳感網(wǎng)高技術(shù)研究重點(diǎn)實(shí)驗(yàn)室,江蘇 南京 210003)
射頻識(shí)別(radio frequency identification,RFID)是利用無(wú)線電波和電磁場(chǎng)自動(dòng)讀取標(biāo)簽上存儲(chǔ)的信息,這些標(biāo)簽附著在物體上進(jìn)行識(shí)別。射頻識(shí)別(RFID)是由射頻標(biāo)簽、讀寫器和天線組成[1]。無(wú)源RFID標(biāo)簽提供了許多吸引人的功能,包括遠(yuǎn)程和無(wú)觸碰接入、低成本、無(wú)電池和高識(shí)別效率。在RFID標(biāo)簽識(shí)別系統(tǒng)中,讀取電子標(biāo)簽的信息是射頻識(shí)別技術(shù)主要的發(fā)展趨勢(shì)。射頻識(shí)別系統(tǒng)在不同的行業(yè)中有著不同的應(yīng)用,比如:畜牧業(yè)、身份識(shí)別、電子票務(wù)、高速收費(fèi)、物流和公安等領(lǐng)域[2]。射頻識(shí)別是一種不需要接觸,在電磁場(chǎng)中根據(jù)頻率去自動(dòng)識(shí)別的新型技術(shù)。
在射頻識(shí)別系統(tǒng)中,標(biāo)簽可以是主動(dòng)式、電池輔助式或被動(dòng)式。無(wú)源標(biāo)簽沒(méi)有電池,而是利用讀寫器發(fā)射的無(wú)線電能量來(lái)激發(fā)信號(hào)傳輸,因此價(jià)格低廉,生產(chǎn)和使用規(guī)模較小。因此,它被廣泛應(yīng)用于各個(gè)領(lǐng)域,包括圖書館資料管理作為RFID標(biāo)簽的主要類型。RFID標(biāo)簽也可以按其頻帶(LF/HF/UHF)進(jìn)行分類。低頻和高頻的標(biāo)簽數(shù)據(jù)傳輸速度慢、存儲(chǔ)的電子標(biāo)簽的ID比較少,同時(shí),它們需要的天線的匝數(shù)比較多,因此也帶來(lái)了成本較高這一缺點(diǎn)。超高頻存儲(chǔ)的電子標(biāo)簽的信息量也比較大,最重要的是,超高頻的ID號(hào)是全球唯一的,因此,安全性比較好。在現(xiàn)有的研究中,關(guān)于低頻和高頻的研究已經(jīng)非常深入,但是對(duì)于超高頻的研究還處于滯后的狀況。在現(xiàn)有的研究中,可以發(fā)現(xiàn)超高頻的射頻識(shí)別系統(tǒng)中電子標(biāo)簽信息存在著漏讀的現(xiàn)象比較嚴(yán)重,對(duì)于標(biāo)簽的準(zhǔn)確性是沒(méi)有保障的,這也嚴(yán)重阻礙了超高頻射頻識(shí)別技術(shù)在各個(gè)領(lǐng)域的發(fā)展,因此,國(guó)內(nèi)外對(duì)于提高超高頻標(biāo)簽信號(hào)讀取的準(zhǔn)確率進(jìn)行了大量的研究。
超高頻射頻標(biāo)簽是通過(guò)電磁波反射進(jìn)行工作的,超高頻射頻標(biāo)簽的工作原理源于雷達(dá)模型。在射頻識(shí)別通信系統(tǒng)中存在發(fā)送頻率、接收頻率和基帶頻率,這些頻率的范圍是不一樣的。射頻識(shí)別系統(tǒng)的工作流程是,讀寫器向RFID標(biāo)簽發(fā)送一個(gè)信號(hào),此時(shí)RFID標(biāo)簽就會(huì)向讀寫器返回一個(gè)響應(yīng)信號(hào),而這個(gè)響應(yīng)信號(hào)中攜帶了RFID標(biāo)簽的信息[3]。RFID標(biāo)簽接收到讀寫器發(fā)送的信號(hào),這信號(hào)中包含了讀寫器發(fā)送過(guò)來(lái)的調(diào)制的載波信號(hào)和沒(méi)有被調(diào)制的載波信號(hào)。RFID標(biāo)簽響應(yīng)讀寫器是將標(biāo)簽載波能量分為兩個(gè)部分,一部分載波能量轉(zhuǎn)換成為標(biāo)簽電路電流的直流電壓;另外一部分載波能量是用來(lái)將射頻標(biāo)簽調(diào)制并信號(hào)反射到讀寫器中[4]。
軟件無(wú)線電的基本結(jié)構(gòu)包括數(shù)字上轉(zhuǎn)換和數(shù)字下轉(zhuǎn)換。這些模塊可以很好地替代過(guò)去的數(shù)字接收設(shè)計(jì)。由于傳統(tǒng)的固定式和嵌入式無(wú)線通信系統(tǒng)已不能滿足無(wú)線通信中頻率變化的需求,所以對(duì)無(wú)線通信系統(tǒng)提出了更高的要求。過(guò)去軟件無(wú)線電的物理層和數(shù)據(jù)鏈路層一旦被設(shè)計(jì)出就很難再去改變,因其物理層和數(shù)據(jù)鏈路層是由硬件設(shè)置的。針對(duì)這一缺點(diǎn),在軟件無(wú)線電體系結(jié)構(gòu)中進(jìn)行了重新開(kāi)發(fā)。現(xiàn)在的物理層和數(shù)據(jù)鏈路層是可以通過(guò)軟件控制的,這相比于過(guò)去的軟件無(wú)線電來(lái)說(shuō)是通信領(lǐng)域的一大發(fā)展。在射頻識(shí)別通信系統(tǒng)中存在發(fā)送頻率、接收頻率和基帶頻率,那么這些頻率是通過(guò)軟件無(wú)線電的射頻前端、ADC和DAC進(jìn)行轉(zhuǎn)化的。射頻前端是用來(lái)發(fā)射或者接收信號(hào)的。射頻前端發(fā)送數(shù)據(jù)是將數(shù)字信號(hào)經(jīng)過(guò)DAC轉(zhuǎn)換成模擬信號(hào)將其發(fā)送出去。射頻前端接收數(shù)據(jù)是傳輸?shù)哪M信號(hào)經(jīng)過(guò)ADC變換成數(shù)字信號(hào)。數(shù)字信號(hào)經(jīng)過(guò)計(jì)算與處理可以得到所需要的射頻標(biāo)簽信息。
GNU Radio是一個(gè)免費(fèi)開(kāi)源的軟件開(kāi)發(fā)工具,它提供信號(hào)處理模塊來(lái)實(shí)現(xiàn)軟件無(wú)線電[5]。它可以與USRP等SDR硬件一起創(chuàng)建軟件無(wú)線電應(yīng)用程序,也可以不使用硬件來(lái)模擬無(wú)線電系統(tǒng)的環(huán)境。為了提高開(kāi)發(fā)效率,GNU Radio軟件內(nèi)部提供了很多信號(hào)處理模塊,如調(diào)制解調(diào)模塊、儀器模塊、信道模塊、濾波模塊、FFT轉(zhuǎn)換模塊、時(shí)頻同步模塊等[6]。編程者可以通過(guò)C++來(lái)編寫所需要的程序模塊。將硬件設(shè)備USRP與軟件GNU Radio相結(jié)合可以為軟件無(wú)線電通信提供一個(gè)高效和靈活的原型系統(tǒng)[7]。對(duì)于這個(gè)原型系統(tǒng)進(jìn)行設(shè)計(jì),調(diào)節(jié)功率來(lái)模擬超高頻RFID系統(tǒng)的讀寫器。
因此,該文基于硬件設(shè)備USRP和軟件GNU Radio設(shè)計(jì)與實(shí)現(xiàn)了一個(gè)GU-RFID的平臺(tái),通過(guò)這個(gè)GU-RFID平臺(tái),可以采集超高頻RFID標(biāo)簽的信號(hào),對(duì)于該信號(hào)進(jìn)行信號(hào)處理。將利用GU-RFID平臺(tái)去開(kāi)展閱讀器的測(cè)試與信號(hào)ASK的調(diào)制工作。
GNU Radio是Eric Blossom發(fā)起的開(kāi)源免費(fèi)的軟件電項(xiàng)目。技術(shù)人員和用戶可以共享其開(kāi)發(fā)成果。GNU Radio軟件是由流圖和模塊組成的。每個(gè)模塊都有out端口和in端口,如果只有out端口的就是信源模塊,如果只有in端口的就是信宿模塊。每一個(gè)流圖都有信源與新宿模塊。
1.1.1 GNU Radio平臺(tái)介紹
GNU Radio軟件的各個(gè)模塊是由C++語(yǔ)言編寫的。在一個(gè)流圖中,各個(gè)模塊都有in和out端口,可以根據(jù)設(shè)計(jì)的流圖將對(duì)應(yīng)模塊的in和out通過(guò)Python語(yǔ)言編寫的程序進(jìn)行連接。將流圖的各個(gè)模塊連接后,運(yùn)行程序[8]。GNU Radio軟件自身有很多信號(hào)處理模塊,可以滿足RFID通信系統(tǒng)的不同需求。GNU Radio軟件中包含很多信號(hào)處理模塊,比如:信號(hào)的調(diào)制解調(diào)器、信源的編碼與解碼、信道的編碼與解碼以及一些濾波器的設(shè)計(jì)等模塊。
GNU Radio軟件中的信號(hào)處理模塊包括調(diào)制、解調(diào)、濾波、FFT、同步等模塊,用戶可以直接調(diào)用這些模塊,以完成各種功能和任務(wù)。GNU Radio使用非常高性能的優(yōu)化了一些模塊的增強(qiáng)指令集[9]。在GNU Radio中,流程圖基本上是用Python編寫的,而流程圖的組件稱為塊,主要是用C++編寫的。Python編程提供了干凈而簡(jiǎn)單的接口,可以將一個(gè)塊連接到另一個(gè)塊;但是Python代碼沒(méi)有針對(duì)快速執(zhí)行進(jìn)行優(yōu)化。GNU Radio中的模塊包括從簡(jiǎn)單的數(shù)學(xué)運(yùn)算到復(fù)雜的數(shù)字濾波、信道編碼和許多其他通信應(yīng)用。GNU Radio的開(kāi)發(fā)過(guò)程為GRC(GNU radio companio)提供了一個(gè)類似Simulink的圖形工具,內(nèi)置的信號(hào)處理模塊庫(kù)將每個(gè)模塊連接起來(lái),構(gòu)成一個(gè)完整的系統(tǒng)[10]。GUN Radio軟件的平臺(tái)架構(gòu)如圖1所示。
圖1 GNU Radio平臺(tái)架構(gòu)
1.1.2 GNU Radio調(diào)試
如果在系統(tǒng)Linux上,就選擇安裝軟件GNU Radi來(lái)運(yùn)行,同樣如果USRP連接在Windows系統(tǒng)上的時(shí)候,就需要在Windows上安裝LabVIEW軟件來(lái)操作。因此,選用不同的操作系統(tǒng),對(duì)應(yīng)所要安裝的軟件是不同的。該課題所選用的是在Ubuntul系統(tǒng)上安裝GNU Radio。使用的Linux系統(tǒng)版本是Ubuntul16.04,GNU Radio安裝的版本是GNU Radio3.7.11。安裝完成后,可以在Ubuntul系統(tǒng)中打開(kāi)終端,并在終端輸入命令:sudo gnuradio-compagin,就可以打開(kāi)GNU Radio的圖形化界面(GRC)。
USRP是一種通用無(wú)線電外設(shè),是無(wú)線電系統(tǒng)的射頻前端,主要的產(chǎn)品由Ettus Research開(kāi)發(fā)[11],用于從接收天線捕獲和數(shù)字化射頻信號(hào)。軟件GNU Radio軟件連接硬件USRP時(shí),需要手動(dòng)安裝UHD(universal hardware drive)驅(qū)動(dòng)包。UHD驅(qū)動(dòng)包要與GNU Radio軟件版本保持一致的情況下,才能夠連接硬件USRP。UHD不僅為USRP提供了硬件驅(qū)動(dòng),還為用戶提供了主機(jī)驅(qū)動(dòng)和API,用戶可以獨(dú)立使用USRP。USRP是由可以編程的FPGA的母板和不同頻率不同通信方式的子板組成[12]。母板包括FPAG、ADC/DAC等多種接口。ADC主要完成模擬信號(hào)向數(shù)字信號(hào)的轉(zhuǎn)換,可以通過(guò)處理數(shù)字信號(hào)得到所需要的RFID標(biāo)簽的信息。DAC主要是完成將基帶信號(hào)向中頻信號(hào)的轉(zhuǎn)換,可以實(shí)現(xiàn)快速的數(shù)據(jù)傳輸。每一個(gè)硬件USRP都要配子板,而對(duì)于子板的選擇,主要是對(duì)子板的射頻頻率范圍和通信方式進(jìn)行選擇。在RFID通信系統(tǒng)中,無(wú)線電外設(shè)USRP對(duì)于射頻標(biāo)簽的信號(hào)進(jìn)行采集和處理,而在PC端,編程者軟件編程可以合理地配置計(jì)算機(jī)的資源[13]。
由USRP和GNU Radio組成的軟件無(wú)線電平臺(tái),具有如下特點(diǎn)[14]:
(1)節(jié)約成本。GNU Radio軟件在開(kāi)發(fā)的時(shí)候是可以滿足不同格式的通信要求,對(duì)于同一硬件就不存在更換的情況了。
(2)技術(shù)門檻低。GNU Radio軟件中已經(jīng)存在許多相關(guān)的標(biāo)準(zhǔn)庫(kù)。程序員可以根據(jù)自己的需求去設(shè)計(jì)GNU Radio軟件中的處理模塊,并用C++進(jìn)行編寫,而Python程序可以用來(lái)連接設(shè)計(jì)的C++的模塊將其導(dǎo)入模塊庫(kù)中。所以,用戶可以根據(jù)自己的課題要求去用C++語(yǔ)言設(shè)計(jì)新模塊,用Python程序去將這些模塊以流圖的形式連接起來(lái)。
(3)開(kāi)源和免費(fèi)。程序員可以在GNU Radio論壇中獲取源代碼,也可以在提供的源代碼中去設(shè)計(jì)自己所需要的模塊。
1.2.1 USRP母板
USRP母板在整個(gè)USRP設(shè)備中占有重要地位。USRP可以完成射頻前端與PC端的連接。它是完全開(kāi)放的一個(gè)硬件平臺(tái),硬件設(shè)備USRP是由可以編程的FPGA和進(jìn)行模擬信號(hào)與數(shù)字信號(hào)可以轉(zhuǎn)換的ADC或者DAC組成的[15]。對(duì)于可以編程的FPGA,可以設(shè)計(jì)不同的USRP系列的不同產(chǎn)品。USRP母板的基本結(jié)構(gòu)如圖2所示。
圖2 USRP的基本結(jié)構(gòu)
1.2.2 USRP子板
USRP子板的選擇主要根據(jù)所需要的頻段和通信方式進(jìn)行。子板的作用主要是將低頻信號(hào)上變頻較高頻信號(hào)進(jìn)行輸出,或者是將輸入的高頻信號(hào)下變頻為低頻的基帶信號(hào)。在同一個(gè)母板中,可以通過(guò)更換子板來(lái)滿足所需要的條件。USRP的母板上有4個(gè)插槽,這4個(gè)插槽分別用來(lái)插入2塊TX子板和2塊RX子板。USRP的子板的選擇主要由所需要的RFID標(biāo)簽的頻率范圍和與閱讀器之間通信的方式?jīng)Q定的。該課題選用的射頻收發(fā)子板-SBX,頻率覆蓋:400~4 400 MHz Rx/Tx,最大信號(hào)處理帶寬:40 MHz、120 MHz,可提供100毫瓦的輸出功率和5 dB的噪聲系數(shù)。SBX分別用于接收和發(fā)送通道,也可以用于雙頻段操作。
射頻識(shí)別技術(shù)就是在沒(méi)有任何接觸的情況下去讀取標(biāo)簽的信息,并對(duì)標(biāo)簽的信息進(jìn)行存儲(chǔ)。
RFID的工作原理是標(biāo)簽進(jìn)入閱讀器磁場(chǎng)空間后,閱讀器發(fā)射特定的頻率信號(hào),將電子標(biāo)簽內(nèi)部的數(shù)據(jù)發(fā)出,同時(shí)閱讀器就可以依次接收數(shù)據(jù)并對(duì)數(shù)據(jù)進(jìn)行應(yīng)用程序的相應(yīng)處理。RFID系統(tǒng)主要由閱讀器、電子標(biāo)簽和天線三部分組成。電子標(biāo)簽主要用來(lái)存儲(chǔ)身份(ID)信息。閱讀器是由收發(fā)模塊、控制模塊和天線三部分組成,主要是用來(lái)接收標(biāo)簽信號(hào)并響應(yīng)標(biāo)簽。
RFID超高頻讀寫器系統(tǒng)平臺(tái)主要由后臺(tái)處理機(jī)(PC機(jī))、硬件設(shè)備(USRP)、天線三部分組成。通過(guò)搭建的RFID超高頻讀寫器系統(tǒng)平臺(tái)來(lái)實(shí)現(xiàn)與無(wú)源超高頻標(biāo)簽之間的通信。設(shè)計(jì)的USRP射頻模塊將發(fā)射特定頻率調(diào)制和DA轉(zhuǎn)換后的電磁波實(shí)現(xiàn)RFID讀寫裝置,并將查詢信號(hào)通過(guò)空間發(fā)射出去,RFID標(biāo)簽接收到查詢信號(hào)后(Query查詢命令),向RFID讀寫器發(fā)送RN16,讀寫器接收到RN16,再向RFID標(biāo)簽發(fā)送ACK應(yīng)答指令,標(biāo)簽接收到應(yīng)答指令,會(huì)向閱讀器發(fā)送標(biāo)簽信息(EPC等信息)。
USRP接收到標(biāo)簽發(fā)送的反向散射信號(hào)后,通過(guò)千兆網(wǎng)線傳送到PC機(jī)進(jìn)行信號(hào)處理,并將處理后的結(jié)果通過(guò)GUI界面顯示出來(lái),如圖3所示。
圖3 RFID 系統(tǒng)構(gòu)建
2.3.1 安裝環(huán)境測(cè)試
檢測(cè)USRP設(shè)備,在此操作系統(tǒng)界面下,打開(kāi)終端輸入uhd_find_devices查看硬件USRP是否成功連接,如果可以查找到USRP的地址,說(shuō)明硬件已經(jīng)成功連接上。接著在終端中繼續(xù)輸入接收此信號(hào)的指令:sudo uhd_fft -f 900M。實(shí)驗(yàn)結(jié)果如圖4所示。
在USRP設(shè)備的接收功能檢測(cè)中,在中心頻率為900 MHz處頻譜變化,說(shuō)明USRP能正確接收900 MHz的信號(hào)。對(duì)于GU-RFID平臺(tái)中的硬件USRP與開(kāi)源軟件GNU Radio進(jìn)行了詳細(xì)的介紹,為下面的超高頻RFID的閱讀器測(cè)試和ASK的調(diào)制打下了平臺(tái)基礎(chǔ)。
2.3.2 RFID閱讀器測(cè)試
GU-RFID平臺(tái)的閱讀器由一臺(tái)筆記本電腦、一臺(tái)USRP N200(SBX子板)和兩個(gè)圓極化天線組成。RFID閱讀器頻率工作范圍為902~920 MHz,兩個(gè)天線連接在USRP設(shè)備上,一個(gè)天線負(fù)責(zé)發(fā)送閱讀器命令,另一個(gè)天線負(fù)責(zé)接收標(biāo)簽的反向射散信號(hào)。
圖4 USRP設(shè)備的接收功能檢測(cè)
在GU-RFID平臺(tái)上啟動(dòng)RFID閱讀器。RFID閱讀器開(kāi)始發(fā)送查詢命令,與在閱讀器識(shí)別范圍內(nèi)的標(biāo)簽進(jìn)行通信。GU-RFID平臺(tái)對(duì)標(biāo)簽的反向射散信號(hào)進(jìn)行分析處理,將讀取到的標(biāo)簽個(gè)數(shù)和標(biāo)簽的EPC等信息顯示在屏幕上,如圖5所示。
圖5 GU-RFID平臺(tái)顯示讀取的標(biāo)簽
通過(guò)GU-RFID平臺(tái),采集RFID的信號(hào),如圖6所示。在GRC中按照ASK調(diào)制的實(shí)現(xiàn)原理,把相應(yīng)的信號(hào)處理模塊連接起來(lái)。首先,在RFID的信號(hào)中加入高斯白噪聲,將兩者相加,然后將相加的信號(hào)與高頻載波信號(hào)進(jìn)行相乘就可以得到想要的ASK信號(hào)。接著對(duì)于得到的ASK信號(hào)進(jìn)行相干解調(diào)法。對(duì)于得到的ASK信號(hào)進(jìn)行帶通的信號(hào)處理,然后與原始的高頻載波信號(hào)進(jìn)行相乘,對(duì)于相乘的信號(hào)進(jìn)行低通濾波的處理,將處理后的數(shù)據(jù)類型由復(fù)數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù),最后確定恢復(fù)由脈沖取樣電路調(diào)制的原始信號(hào)。這是在與USRP相連接的開(kāi)源軟件GNU Radio中進(jìn)行模塊的設(shè)計(jì)來(lái)完成原始數(shù)字調(diào)制信號(hào)的恢復(fù)。在GNU Radio軟件中的信號(hào)處理模塊有采樣速率、數(shù)據(jù)類型、調(diào)制解調(diào)類型、中心頻率、增益值等等都是可以調(diào)整的。在各個(gè)模塊之間可以分別點(diǎn)擊模塊中的in和out進(jìn)行模塊間的實(shí)時(shí)連接。在GRC界面中實(shí)現(xiàn)ASK。其中,圖7為ASK調(diào)制的流圖,圖8為ASK調(diào)制的波形和頻譜圖。
圖6 USRP接收RFID信號(hào)
圖7 ASK調(diào)制流圖
圖8 ASK調(diào)制的波形和頻譜圖
基于硬件USRP與其開(kāi)源軟件GNU Radio相結(jié)合,設(shè)計(jì)并實(shí)現(xiàn)了一種GU-RFID平臺(tái)。該平臺(tái)對(duì)研究RFID系統(tǒng)物理層、MAC層性能提供了一個(gè)數(shù)據(jù)采集與分析工具。下一步,將利用構(gòu)建的GU-RFID平臺(tái),研究RFID系統(tǒng)物理層、MAC層性能以及RFID系統(tǒng)的安全性。