趙偉+熊衛(wèi)華+季瑞松
摘 要:主要介紹了一種符合國家標(biāo)準(zhǔn)的超高頻RFID閱讀器的數(shù)字基帶系統(tǒng)的設(shè)計(jì)與分析,該基帶部分的編解碼主要依靠FPGA來實(shí)現(xiàn)。文中首先對800/900 MHz頻段的射頻識別系統(tǒng)空中接口協(xié)議的國家標(biāo)準(zhǔn)GB/T 29768-2013作了簡要介紹,對系統(tǒng)的整個編解碼系統(tǒng)的實(shí)現(xiàn)以及整個系統(tǒng)的架構(gòu)和各個模塊作了詳細(xì)說明,最后給出了該讀寫器工作時抓取的數(shù)據(jù)波形。
關(guān)鍵詞:讀寫器;FPGA;國家標(biāo)準(zhǔn);TPP;FM0
中圖分類號:TN929.5 文獻(xiàn)標(biāo)識碼:A 文章編號:2095-1302(2015)10-00-03
0 引 言
射頻識別技術(shù)RFID(Radio Frequency Identification)是一種依靠無線射頻的電磁波來傳播信息并且可以自動識別的非接觸式通信技術(shù)。因?yàn)槠渚哂蟹墙佑|性、讀取靈敏度高等優(yōu)勢,因此廣泛運(yùn)用于物聯(lián)網(wǎng)技術(shù)領(lǐng)域以及物流、生產(chǎn)、交通等需要實(shí)時通信的領(lǐng)域[1]。
本文中主要介紹了一種使用FPGA來實(shí)現(xiàn)讀寫器基帶系統(tǒng)的編解碼部分功能的設(shè)計(jì)方案,基于新進(jìn)頒布的UHF國家標(biāo)準(zhǔn)GB/T29768-2013協(xié)議,由FPGA來進(jìn)行前向鏈路的TPP編碼和后向鏈路的FM0/miller解碼。這種方式可對標(biāo)簽傳送的數(shù)據(jù)實(shí)現(xiàn)較快地解碼。文中的FPGA選用的是ALTERA公司的EP4CE30F484芯片。本文著重描述了設(shè)計(jì)中軟件部分的核心內(nèi)容。
1 RFID系統(tǒng)簡介
通常來說,常見的RFID系統(tǒng)主要由高頻或超高頻讀寫器、有源或無源標(biāo)簽、天線以及與通信末端連接的上位機(jī)等組成。讀寫器與標(biāo)簽之間的通信通過天線進(jìn)行傳遞。RFID的區(qū)分可根據(jù)工作的頻段劃分為中頻、高頻、超高頻,本文所討論的RFID系統(tǒng)工作頻率為920-925 MHz的超高頻RFID。在一個完整的RFID系統(tǒng)中,讀寫器是一個具有多種功能的不可或缺的部分,因?yàn)槭紫茸x寫器必須能夠同時接收和發(fā)送數(shù)據(jù)且具有對其處理的能力,所以,其在與電子標(biāo)簽通信的同時也要向末端傳輸數(shù)據(jù)并執(zhí)行相關(guān)的操作指令。一般的讀寫器系統(tǒng)主要劃分為兩個部分,即對數(shù)字信號進(jìn)行處理的基帶部分以及負(fù)責(zé)射頻前端的射頻部分,本文著重介紹的是數(shù)字通信的基帶部分[2]。
2 UHF RFID 相關(guān)協(xié)議的介紹
由于超高頻RFID技術(shù)是一種近年才興起的無線通信技術(shù),該技術(shù)在國際上尚無一種統(tǒng)一的標(biāo)準(zhǔn)協(xié)議,目前比較流行的協(xié)議主要有ISO18000-6B/C協(xié)議、EPC C1G2協(xié)議等,其基帶系統(tǒng)所使用的編解碼技術(shù)差別不大,較為成熟。我國為在這一新興的前沿技術(shù)上占據(jù)主動權(quán),近年來國家大力發(fā)展基于RFID技術(shù)的物聯(lián)網(wǎng)行業(yè),同時頒布了UHF RFID(800/900 MHz)的國家標(biāo)準(zhǔn)協(xié)議GB/T 29768-2013。該標(biāo)準(zhǔn)具有識別速度快、可讀標(biāo)簽數(shù)量多、群讀能力強(qiáng)、可存儲空間大、包含多種加密方式的保護(hù)方式安全性強(qiáng)等眾多優(yōu)點(diǎn)。下文將著重介紹該國標(biāo)的編解碼方式。
2.1 TPP編碼介紹
GB/T 29768-2013協(xié)議規(guī)定讀寫器向標(biāo)簽發(fā)送數(shù)據(jù)的鏈路(前向鏈路)的數(shù)據(jù)編碼方式采用TPP編碼。讀寫器給標(biāo)簽發(fā)送數(shù)據(jù)時,必須以前導(dǎo)碼來開始所有的數(shù)據(jù)通信。前向鏈路中必須使用如圖1所示的由分隔符、校準(zhǔn)符一、校準(zhǔn)符二組成的前導(dǎo)碼通信。其中允許的校準(zhǔn)符一和校準(zhǔn)符二的長度誤差為±1%,而分隔符的允許誤差為±5%。
圖1 前向鏈路的前導(dǎo)碼
在接收到前導(dǎo)碼后,當(dāng)兩個間隔時間的連續(xù)上升沿脈沖被標(biāo)簽測定,標(biāo)簽的解碼應(yīng)按照以下方式進(jìn)行:
(1)當(dāng)檢測到的脈沖的時間間隔小于時間Pivot1,則此時被解碼的符號應(yīng)為00;
(2)當(dāng)檢測到的脈沖的時間間隔小于時間Pivot2但是又不小于時間Pivot1,則此時被解碼的符號應(yīng)為01;
(3)當(dāng)檢測到的脈沖的時間間隔不小于時間Pivot2但是又小于時間Pivot3,則此時被解碼的符號應(yīng)為11;
(4)當(dāng)檢測到的脈沖的時間間隔不小于時間Pivot3時,則此時被解碼的符號應(yīng)為10。
圖2所示的編碼符號即為TPP編碼,2Tc即為符號00的持續(xù)時間,3Tc即為符號01的持續(xù)時間,同理,4Tc為符號11的持續(xù)時間,持續(xù)時間5Tc為符號10的持續(xù)時間,±1%的長度允差為這四種符號所允許。一個Tc的時間長度可以取為6.25?s或12.5 ?s,該時間長度允許誤差為±1%,固定的Tc應(yīng)該被使用在讀寫器的一個盤點(diǎn)周期內(nèi),本設(shè)計(jì)中Tc選取為6.25 ?s[3]。
圖2 TPP編碼符號
2.2 FM0/miller編碼介紹
GB/T 29768-2013標(biāo)準(zhǔn)規(guī)定讀寫器對標(biāo)簽發(fā)揮的數(shù)據(jù)譯碼采用FM0編碼或者M(jìn)iller編碼兩種形式,兩種編碼的本質(zhì)是沒有區(qū)別的,雖然Miller碼的抗干擾能力較強(qiáng),但是它的編碼速度比FM0編碼要慢許多。本次設(shè)計(jì)采用了FM0編碼的方式,F(xiàn)M0(Bi-Phase Space)全稱是雙相間隔碼編碼,采用一個由高電平到低電平或者由低電平到高電平的電平轉(zhuǎn)換組合來表示數(shù)據(jù)0,數(shù)據(jù)1表示為一個單獨(dú)的高電平或者低電平。數(shù)據(jù)0和1編碼所占的時間周期是一樣的。具體編碼規(guī)則是在半比特周期中任意邊沿且在每一比特周期開始時電平都要反向,圖3給出了FM0的基本符號圖形[4]。
圖3 FM0編碼符號
3 系統(tǒng)總體設(shè)計(jì)
本文中讀寫器的設(shè)計(jì)采用MCU+FPGA協(xié)同工作的方式。其中,F(xiàn)PGA主要用于數(shù)字基帶部分對數(shù)字信號進(jìn)行相應(yīng)的解編碼處理,MCU采用的是基于ARM Cortex-M3內(nèi)核的STM32F207芯片,MCU部分主要負(fù)責(zé)整個系統(tǒng)的邏輯控制功能。FPGA主要包括協(xié)議控制及命令產(chǎn)生模塊、TPP編碼模塊、FM0解碼模塊以及同MCU進(jìn)行數(shù)據(jù)通信的SPI模塊部分。
整個基帶系統(tǒng)的工作過程為:FPGA對讀寫器需要發(fā)送的Query命令數(shù)據(jù)以及相應(yīng)的CRC校驗(yàn)位進(jìn)行TPP編碼,完成編碼后將TPP碼送至前端射頻部分。射頻部分對該數(shù)字編碼通過混頻器進(jìn)行載波調(diào)制(ASK),調(diào)制后的信號經(jīng)混頻器和耦合器再經(jīng)天線向射頻場內(nèi)進(jìn)行發(fā)射。
讀寫器的信息被射頻場內(nèi)的電子標(biāo)簽接收到后,標(biāo)簽根據(jù)讀寫器發(fā)送來的命令參數(shù),選擇對應(yīng)的編碼方式,首先對讀寫器的信息進(jìn)行解碼,之后對要回復(fù)的數(shù)據(jù)進(jìn)行編碼,經(jīng)調(diào)制之后在空間射頻場內(nèi)傳播。
當(dāng)場內(nèi)標(biāo)簽反射回的信息經(jīng)過天線被讀寫器接收后,該未經(jīng)解調(diào)的信號被轉(zhuǎn)至讀寫器的接收模塊部分。該標(biāo)簽返回的信息首先經(jīng)過讀寫器接收模塊對其進(jìn)行解調(diào),信號經(jīng)過解調(diào)后被后級的濾波器以及ADC轉(zhuǎn)換器轉(zhuǎn)化為0和1的數(shù)字信號流,然后接收到該數(shù)字流FPGA中相應(yīng)的解碼模塊會根據(jù)MCU發(fā)出的控制信號對其進(jìn)行相應(yīng)的FM0解碼或miller解碼。經(jīng)過解碼模塊解碼后的信號將會被FPGA內(nèi)部的控制模塊和命令模塊接收處理判斷后產(chǎn)生下一輪的命令數(shù)據(jù),該命令數(shù)據(jù)用于決定讀寫器是否與標(biāo)簽進(jìn)行重新交互信息或者讀取新的標(biāo)簽[5]。
4 基帶系統(tǒng)的FPGA實(shí)現(xiàn)
系統(tǒng)中的FPGA主要功能為實(shí)現(xiàn)基帶的編碼與解碼功能,F(xiàn)PGA內(nèi)部分為TPP編碼模塊與FM0/miller碼解碼模塊。
4.1 TPP編碼模塊設(shè)計(jì)
在GB/T 29768-2013標(biāo)準(zhǔn)中,前向鏈路(發(fā)射鏈路)的數(shù)據(jù)編碼使用TPP編碼進(jìn)行編碼。當(dāng)PC端通過MCU發(fā)送命令指令和數(shù)據(jù)后,MCU將會給FPGA發(fā)送控制指令用以啟動編碼。TPP編碼模塊接收到該指令后將會返回應(yīng)答信號,MCU收到返回的應(yīng)答信號后將需要編碼的數(shù)據(jù)送入TPP模塊。當(dāng)FPGA完成數(shù)據(jù)編碼后,編碼模塊需對CRC值進(jìn)行編碼。TPP編碼輸出的每一幀數(shù)據(jù)都由一個前導(dǎo)碼、8位數(shù)據(jù)位組成,前導(dǎo)碼封裝成幀頭[6]。該TPP編碼模塊的具體實(shí)現(xiàn)方式為:當(dāng)檢測到NRZ碼輸入為00時,TPP碼輸出1個Tc時間長度的高電平和1個Tc時間長度的低電平,相當(dāng)于NRZ碼的10;當(dāng)輸入的NRZ碼為01時,TPP碼輸出2個Tc時間長度的高電平和1個Tc時間長度的低電平,此時相當(dāng)于NRZ碼的110。依次得出符號11的TPP碼相當(dāng)于NRZ碼的1110,符號10相當(dāng)于TPP碼的11110。
TPP編碼模塊的處理流程如圖4所示[7]。
4.2 FM0譯碼模塊設(shè)計(jì)
根據(jù)GB/T 29768-2013標(biāo)準(zhǔn),標(biāo)簽向讀寫器返回的信息鏈路(反向鏈路)的編碼方式采用FM0編碼或miller編碼。本設(shè)計(jì)采用FM0編碼模式。該編碼模塊的具體實(shí)現(xiàn)方式如下:當(dāng)模塊接收到開始解碼命令后,編碼模塊對模塊內(nèi)進(jìn)行初始化操作。后對數(shù)字化后的標(biāo)簽返回的信號進(jìn)行檢波,檢測前導(dǎo)序列以及是否存在幀起始信號(V字符),當(dāng)前導(dǎo)序列碼正確及無幀結(jié)束信號后[8],該解碼模塊對數(shù)據(jù)段進(jìn)行FM0解碼,對每個碼元進(jìn)行解碼主要靠該碼元內(nèi)高低電平的時間長度來判斷0或1信號。該模塊將解碼后的數(shù)據(jù)實(shí)時串并轉(zhuǎn)換并存入緩存區(qū)。
圖5所示為FM0解碼模塊的軟件流程圖[9]。
圖4 TPP編碼模塊處理流程 圖5 FM0解碼模塊軟件流程圖
4.3 CRC校驗(yàn)?zāi)K
CRC校驗(yàn)?zāi)K主要用來在基帶系統(tǒng)譯碼時對接收的信號進(jìn)行完整性校驗(yàn),使得MCU對FPGA的各個模塊進(jìn)行操作控制,根據(jù)GB/T 29768-2013標(biāo)準(zhǔn)規(guī)定,x16+x12+x5+1為本設(shè)計(jì)使用的CRC-16校驗(yàn)碼的生成多項(xiàng)式,二進(jìn)制數(shù)FFFFh被預(yù)加載進(jìn)16位寄存器中,此CRC計(jì)算是按高位優(yōu)先原則由高位到低位進(jìn)行的。CRC-5的生成多項(xiàng)式為X5+X3+1,5位寄存器預(yù)加載01001b,按高位優(yōu)先原則進(jìn)行CRC計(jì)算[10]。
4.4 時鐘分頻模塊
本設(shè)計(jì)中FPGA的工作時鐘頻率為50 MHz,F(xiàn)PGA內(nèi)部各模塊所需的數(shù)據(jù)速率與FPGA工作頻率不同,所以該FPGA內(nèi)部需時鐘分頻模塊來產(chǎn)生各個模塊所需時鐘頻率。在本設(shè)計(jì)的TPP編碼中,1個Tc的時間長度為6.25 ?s,所以TPP模塊所需的時鐘頻率為80 kHz,該時鐘頻率即由分頻模塊分頻所得。文中解碼模塊部分FM0所需始頻率為160 kHz。所以時鐘分頻模塊需要產(chǎn)生160 kHz和80 kHz兩種工作頻率[11]。
5 軟件仿真
以上各模塊均使用Verilog描述語言來實(shí)現(xiàn)。圖6所示為使用QuartusⅡ軟件在讀寫器讀寫標(biāo)簽時所抓取的實(shí)時波形,從圖6中可得出標(biāo)簽在收到讀寫器發(fā)送的命令后返回的信號解碼后為110100010100,即為一個RN16信號。
圖6 命令發(fā)送及標(biāo)簽信息的返回波形
6 結(jié) 語
本文介紹了在國家標(biāo)準(zhǔn)空口協(xié)議GB/T 29768-2013的框架下,充分利用FPGA的優(yōu)勢即可以快速處理大量數(shù)據(jù)流的特點(diǎn),解決了讀寫器讀取標(biāo)簽速率難以提升這個一直無法有效解決的難題,從而實(shí)現(xiàn)了UHF RFID讀寫器中編解碼模塊的設(shè)計(jì)。設(shè)計(jì)經(jīng)過了軟件仿真與實(shí)際硬件測試,軟件與硬件的測試結(jié)果均顯示該設(shè)計(jì)的讀寫器工作良好,且基帶部分編解碼的速度、讀寫器的性能均得到顯著提升。
參考文獻(xiàn)
[1]董敏.超高頻RFID讀寫器數(shù)字基帶技術(shù)研究[D].成都:成都理工大學(xué),2012.
[2]陳佳雷.基于FPGA的UHF RFID讀寫器數(shù)字基帶部分的研究與設(shè)計(jì)[D].南京:南京郵電大學(xué),2012.
[3] GB/T 29768—2013信息技術(shù)射頻識別800/900 MHz空中接口協(xié)議[S].中國國家標(biāo)準(zhǔn)管理委員會,2015-05-01.
[4]馮守虎.UHF RFID閱讀器的數(shù)字基帶技術(shù)研究[D].南京:南京郵電大學(xué),2011.
[5]于志宏,張紅雨.UHF RFID讀寫器編解碼模塊的FPGA實(shí)現(xiàn)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2012,12(10):12-15.
[6]陳楊.基于FPGA的UHF讀寫器設(shè)計(jì)[D].成都:電子科技大學(xué),2012.
[7]陳小軍.基于FPGA的超高頻RFID網(wǎng)絡(luò)讀寫器設(shè)計(jì)[D].成都:電子科技大學(xué),2013.
[8]于志宏.基于EPC C1G2協(xié)議的UHF RFID基帶系統(tǒng)及驗(yàn)證平臺的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2013.
[9]林宇.基于AS3992的UHF RFID讀寫模塊的研究與開發(fā)[D].上海:華東理工大學(xué),2012.
[10]許靜.UHF RFID讀寫器數(shù)字基帶系統(tǒng)的設(shè)計(jì)及其防沖突算法研究[D].長沙:湖南大學(xué),2011.
[11]陽璞瓊.超高頻RFID系統(tǒng)編解碼與校驗(yàn)問題的研究[D].長沙:湖南大學(xué),2009.