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