蔣冠宇蔣 泰鄧家明張余明
(1.清華大學,北京 100084;2.廣西瀚特信息產業股份有限公司,廣西 桂林 541004)
一種超高頻RFID讀寫器的設計與實現
蔣冠宇1蔣 泰2鄧家明2張余明2
(1.清華大學,北京 100084;2.廣西瀚特信息產業股份有限公司,廣西 桂林 541004)
目的:設計一種多標簽超高頻RFID讀寫器并實現其讀寫功能。方法:根據ISO18000-6短程通信接口協議,基于arm7芯片實現軟件數據處理功能,采用外圍硬件設計實現整個系統功能。結果:讀寫器能夠同時讀取多枚標簽并且有效避免沖突發生,讀取的數據可以通過服務器做進一步處理。結論:該讀寫器工作正常,具有比較大的應用前景。
RFID;ISO18000-6協議;防沖突算法
1.1 射頻識別的概念
射頻識別(Radio Frequency Identification,RFID)是一種無線通信技術,可以通過無線電訊號識別特定目標并讀寫相關數據,而無需識別系統與特定目標之間建立機械或者光學接觸。
無線電的信號是通過調成無線電頻率的電磁場,把數據從附著在物品上的標簽上傳送出去,以自動辨識與追蹤該物品。某些標簽在識別時從識別器發出的電磁場中就可以得到能量,并不需要電池;也有標簽本身擁有電源,并可以主動發出無線電波(調成無線電頻率的電磁場)。標簽包含了電子存儲的信息,數米之內都可以識別。與條形碼不同的是,射頻標簽不需要處在識別器視線之內,也可以嵌入被追蹤物體之內。
1.2 RFID系統組成
RFID系統包括標簽、RFID讀寫器和RFID應用系統三大部分,如圖1所示。

圖1 RFID系統組成
標簽:由天線,耦合元件及芯片組成,每個標簽具有唯一的電子編碼,附著在物體上標識目標對象。
RFID讀寫器:由天線,耦合元件,芯片組成,讀?。ㄓ袝r還可以寫入)標簽信息的設備,是RFID系統的核心部分,主要任務是控制射頻模塊向標簽發射讀取信號,并接收標簽的應答,對標簽的標識信息進行解碼,將標識信息連帶標簽上其他相關信息傳輸到主機以供處理。讀寫器具有對電子標簽的ID號列舉、數據讀、寫等功能,例如:(1)喚醒標簽:只有被喚醒的標簽才能與讀寫器進行通信,防止系統外其它標簽的干擾,確保讀寫器與本系統標簽信息交換的可靠與準確。(2)讀取標簽數據:不僅可以讀取標簽的ID 號,還可讀取指定標簽存儲區的數據;不僅可以讀取單個標簽的數據,而且可以同時讀取天線發射波范圍內的多個標簽的數據。(3)寫入標簽數據:可以向指定的標簽存儲區寫入數據。(4)對標簽數據進行保護:對指定的標簽存儲區設置“寫保護”,將使該存儲區的數據被鎖存并永久“保護”,不被改寫。
應用軟件系統:是應用層軟件,主要是把收集的數據進一步處理,并為人們所使用。
1.3 RFID系統的工作原理
標簽進入磁場后,接收讀寫器發出的射頻信號,憑借感應電流所獲得的能量發送出存儲在芯片中的產品信息(無源標簽或被動標簽),或者由標簽主動發送某一頻率的信號(Active Tag,有源標簽或主動標簽),讀寫器讀取信息并解碼后,送至中央信息系統進行有關數據處理。
超高頻RFID標簽讀寫器主要由控制模塊、發射模塊、接收模塊、基帶處理模塊、通道切換模塊等構成,如圖2所示。發射模塊受控制模塊控制,為讀寫器提供載波信號,并對載波信號進行調制和功率放大后,通過發射模塊、通道切換模塊的射頻接口輸出發射信號至電子標簽;同時,射頻接口接收電子標簽返回的反射信號,輸入到接收模塊;接收模塊將電子標簽返回的反射信號進行零中頻解調,實現雙路正交解碼,輸出兩路基帶信號;基帶處理模塊對兩路基帶信號進行濾波、放大、整形,得到控制模塊可處理的低頻信號;控制模塊同時接收和處理兩路正交低頻信號,根據相關協議將信號恢復為電子標簽的原始信息。

圖2 超高頻RFID標簽讀寫器結構
RFID接口協議:空中接口通信協議規范讀寫器與電子標簽之間信息交互,目的是為不同廠家生產設備之間的互聯互通性。ISO/IEC制定五種頻段的空中接口協議,這種思想充分體現標準統一的相對性,一個標準是對相當廣泛的應用系統的共同需求,但不是所有應用系統的需求,一組標準可以滿足更大范圍的應用需求。
ISO18000-6信息技術-基于單品管理的射頻識別-適用于超高頻段 860~960MHz,規定讀寫器與標簽之間的物理接口、協議和命令再加上防碰撞方法。它包含TypeA、TypeB和TypeC三種無源標簽的接口協議,通信距離最遠可以達到10m。其中TypeC是由EPCglobal起草的,并于2006年7月獲得批準,它在識別速度、讀寫速度、數據容量、防碰撞、信息安全、頻段適應能力、抗干擾等方面有較大提高。2006年遞交V4.0草案,它針對帶輔助電源和傳感器電子標簽的特點進行擴展,包括標簽數據存儲方式和交互命令。帶電池的主動式標簽可以提供較大范圍的讀取能力和更強的通信可靠性,不過其尺寸較大,價格也更貴一些。
本超高頻RFID讀寫器采用TypeB接口協議。
3.1 數據編碼
(1)前向鏈路(讀寫器到標簽):讀寫器通過調制載波完成到識別卡的數據傳送,數據編碼通過產生曼徹斯特編碼的脈沖實現。
(2)返向鏈路(標簽到讀寫器):對于標簽到讀寫器的通信,發送數據使用反向散射技術。這需要在返向鏈路上讀寫器給識別卡提供穩定的能量。當讀寫器向識別卡提供能量時,識別卡將交替的改變其天線前端的有效阻抗,從而改變能被讀寫器辨識的識別卡的射頻反射率。
(3)命令的格式:命令幀由下列域組成:幀頭檢測,幀頭,分隔符,命令碼,參數,CRC-16。
(4)幀頭檢測域由一個穩定的沒有調制的載波組成,持續時間至少400us。一般來說此類短程通訊的速率為40kbps,對應幀頭檢測域為16位。
幀頭等效為9位非歸零格式的曼徹斯特碼0,編碼形式為010101010101010101。
CRC-16:CRC即循環冗余校驗碼(Cyclic Redundancy Check[1] ):是數據通信領域中最常用的一種差錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選定。
幀的格式:響應幀由靜默域,返回幀頭,數據域以及CRC-16構成。
3.2 Btree協議與沖突仲裁
(1)全協議的描述
標簽主要有四個主要狀態:電源關閉狀態(power-off),當讀寫器不能激活識別卡時,識別卡處于電源關閉狀態(對于有源標簽,意味著射頻激勵強度不足以激活標簽的回路);就緒狀態(ready),當讀寫器第一次激活標簽時,識別卡處于ready狀態;識別狀態(ID),當標簽試圖向讀寫器傳送識別信息時,識別卡處于 ID狀態;數據交換狀態(DATA-EXCHANGE)狀態,當識別卡被讀寫器識別并被選中時,識別卡處于數據交換狀態。
(2)沖突仲裁
讀寫器可用GROUP_SELECT與GROUP_UNSELECT命令,使所有或一部分在讀寫器射頻電磁場的標簽參與沖突仲裁。為了支持仲裁沖突,標簽卡上應該具有兩個硬件電路:一個8bit計數器 COUNT,以及一個隨機數發生器(兩個可能的值:0或1)。開始時,一組標簽通過GROUP_SELECT命令轉換到ID狀態,還應該將它們內部的計數器置0。
在上述選擇過程后,實現下列循環:
①所有處于ID狀態且計數器COUNT為0的標簽應發送它們的ID號。最初這個組包含所有選中的標簽;
②如果多于一個標簽在發送,該讀寫器接受一個錯誤的響應,發出FAIL命令;
③計數器COUNT不等于0的標簽在接收到FAIL命令后,將增加COUNT,它們將更沒有機會發送ID。計數器等于0的識別卡在接收到FAIL命令后,將生成一個隨機數。隨機數為1的標簽將增加COUNT,它們將不會發送。隨機數為0的識別卡將保持COUNT為0,并且再一次發送ID?,F在出現四種可能情況之一;
④如果多于一個標簽發送,則重復FAIL;
⑤如果所有標簽的COUNT不為0,無標簽發送,讀寫器接收不到信號,將發出 SUCCESS命令。所有內部計數器 COUNT減小,以及計數器COUNT為0的標簽發送。一般來說,這樣會返回②;
⑥如果只有一個標簽發送并且ID號被正確讀到,讀寫器應發送帶此ID的DATA_READ命令。如果DATA_READ命令被識別卡正確地收到,該識別卡應轉為 DATA_EXCHANGE狀態,并發送它的數據。讀寫器發送SUCCESS命令,所有處于ID狀態的標簽減小計數器COUNT;
⑦如果只有一個標簽的計數器COUNT為1,重復第五步或第六步。如果多于一個標簽發送,重復②;
⑧如果只有一個標簽發送,而接受的ID有錯誤,該讀寫器應發送RESEND命令。如果ID正確地收到,重復5。如果重發接收ID有若干個,則會假定有多個標簽發送,重復②。
(3)命令
命令分為四個功能組:選擇命令,識別命令,數據傳輸命令以及多卡處理命令。
命令為下列類型之一:強制的,可選的,定制的以及專有的。
具體命令的標準見ISO18000-6B協議標準。
本讀寫器利用LPC-2132單片機開發,其軟件實現步驟主要如下:
(1)定義常量
超高頻RFID讀寫器系統比較復雜,其中涉及許多固定的命令和寄存器,將這些常量定義有利于代碼的閱讀和理解。
命令:
上文提到,標簽主要存在四個狀態,狀態間的轉換主要靠讀寫器發送的命令實現,以達到不同的目的。
命令主要分為兩類:
①選擇命令
選擇(selection)命令根據某種條件在射頻場中選擇一組識別卡,進行識別或寫入數據,此命令可用于沖突仲裁。比如GROUP_SELECT_XX(用于選擇標簽,XX表示不同的條件),GROUP_UNSELECT_XX(用于去選擇),SUCCESS(當標簽內部計數器COUNT為0的時候響應,發送ID),RESEND(重新發送ID),INITIALIZE(復位),FAIL_O(多于一個標簽試圖識別自己是,使某些標簽退避)
②數據轉移命令
數據轉移命令用于數據從存儲器讀出或寫入存儲器。比如READ(標簽在滿足一定條件時轉化為DATA_EXCHANGE狀態),READ_FLAGS(讀flags),READ_VARIABLE讀指定長度的內容等等)。
以上每個命令都對應自己的命令碼,程序中將這些命令碼常量定義為以上的表達形式。
寄存器:單片機每個模塊都有自己的寄存器用來存儲數據,而每個寄存器對應的地址是固定的,比如在定時器中有中斷寄存器(0xE0004000),定時器控制寄存器(0xE0004004),定時器計數器(0xE0004008)等,將它們的地址定義成一個相關的名字,T0IR,T0TCR,T0TC。
(2)定義函數
讀寫器的軟件功能靠不同的函數實現。函數按模塊劃分,主要如下:外設定義,讀取數據,寫入數據,發送數據,循環冗余校驗,數據編碼等。
①外設定義
讀寫器通過單片機開發,為實現其功能需要單片機的外部設備,這就需要啟動初始化外設并且設定相關參數。比較重要的外部設備有通用I/O口(GPIO,定義I/O口的方向,使用方式,以及高低電平的定義),異步串行接口(UART,用于數據串行傳輸,需要定義時鐘和波特率),定時器(TIMER,用于計數產生中斷),脈寬調制器(PWM,等效正弦波輸出),數模/模數轉換(A/D,D/A),看門狗(WATCHDOG,用于防止程序鎖死)
②讀取數據
讀寫器收到來自標簽的信號經過外圍電路放大判決后送入單片機,單片機設置其中若干引腳為捕捉功能,其用途是捕捉每一次電平的跳轉,于此同時定時器計數,記錄兩次跳轉的時間間隔,這樣就可以知道每次高低電平的時間長短(脈寬),根據相關協議經過換算就可以知道這是數據0還是數據1,或者是無效數據。將數據翻譯好了以后就是來自標簽的響應,根據標簽不同的響應做不同的處理。
③寫入數據
讀寫器的主要目的就是讀取來自標簽的信息,然后傳輸給后臺服務器進行處理,這之中就需要將讀到的數據寫入單片機的緩存中。寫入數據不僅要考慮準確性,還要考慮效率,比如之前已經寫入的標簽信息之后再次讀到時忽略此次寫入,不再改變原有信息。
④發送數據
讀寫器發送的數據主要是命令。系統開始工作時,讀寫器每隔一段時間發送一次讀卡命令,直到有標簽響應,讀寫器讀到響應之后根據不同的情況改變發送的命令,通過沖突仲裁等手段最終正確讀到所有卡的信息。
⑤數據編碼
上文提到,協議采用的是曼徹斯特編碼,當命令形成以后需要通過外部設備形成曼徹斯特編碼再到外圍電路處理。
⑥循環冗余校驗
無線通信中一個很大的問題是誤碼。由于數字信號的傳輸需要加載在模擬信號上通過空間電磁場傳播,數據的正確性會受到發端的調制和放大模塊,信道與收端的放大解調模塊的影響,最終收到的數據有可能不正確,使用不正確的數據將會影響整個系統的正常運行。因此工程上在每一段數據后面加上一段校驗碼,接收方通過校驗碼來判斷接收的數據是否正確以作下一步處理,通過犧牲數據空間效率的方式提升正確率。數據校驗的方法很多,最簡單的比如奇偶校驗,可以檢測出奇數個誤碼的情況。CRC校驗(循環冗余校驗)是數據通訊中最常采用的校驗方式。在嵌入式軟件開發中,經常要用到 CRC 算法對各種數據進行校驗。循環冗余校驗碼(CRC)的基本原理是:在K位信息碼后再拼接R位的校驗碼,整個編碼長度為 N位,因此,這種編碼也叫(N,K)碼。對于一個給定的(N,K)碼,可以證明存在一個最高次冪為N-K=R的多項式G(x)。根據G(x)可以生成K位信息的校驗碼,而G(x)叫做這個CRC碼的生成多項式。 校驗碼的具體生成過程為:假設要發送的信息用多項式C(X)表示,將C(x)左移R位(可表示成C(x)*2R),這樣C(x)的右邊就會空出R位,這就是校驗碼的位置。用 C(x)*2R 除以生成多項式G(x)得到的余數就是校驗碼。生成多項式的概念:是接受方和發送方的一個約定,也就是一個二進制數,在整個傳輸過程中,這個數始終保持不變。在發送方,利用生成多項式對信息多項式做模 2除生成校驗碼。在接受方利用生成多項式對收到的編碼多項式做模 2除檢測和確定錯誤位置。應滿足以下條件:A.生成多項式的最高位和最低位必須為1。B.當被傳送信息(CRC碼)任何一位發生錯誤時,被生成多項式做除后應該使余數不為0。C.不同位發生錯誤時,應該使余數不同。D.對余數繼續做除,應使余數循環。CRC-16采用的生成多項式一般為0x1021。
CRC-16算法如下:
①如果原來的CRC最高位異或輸入是0的話(既CRC最高位與校驗的信息位相同),那么結果就是使CRC左移一位;
②如果原來的CRC最高位異或輸入是1的話(既CRC最高位與校驗的信息位不同),那么結果就是先使CRC左移一位,再異或生成的多項式。


事實上,計算本字節后的CRC碼,等于上一字節余式CRC碼的低8位左移8位,加上上一字節CRC右移 8位和本字節之和后所求得的 CRC碼。如果我們把 8位二進制序列數的CRC(共256個)全部計算出來,放在一個表里,編碼時只要從表中查找對應的值進行處理即可。這是一種 CRC改進方法,對于內存的節省很有幫助。
由于RFID技術具有防水、防磁、耐高溫、使用壽命長、讀取距離大、標簽上數據可以加密、存儲數據容量更大、存儲信息更改自如等優點,已經成為21世紀全球自動識別技術發展的主要方向。本讀寫器產品可以應用于商貿、汽車、藥物、食品、運輸、能源、軍工等領域,具有廣闊的應用空間。
[1] ISO18000-6A/B標準:Information technology automatic identification and data capture techniques-Radio frequency identification for item management air interface-Part 6: Parameters for air interface communications at 860-960MHz.
[2] 蔣泰,高廣尚. ISO18000-6 Type C標準中防沖突技術的改進[J].計算機工程與應用,2010,(20):42-45.
[3] 禹士朋.UHF射頻識別系統的防沖突算法研究[D].鄭州:鄭州大學,2010.
Design and implementation of UHF RFID reader
Objective:A multi-tag UHF RFID reader is designed and realized.Method:According to ISO18000-6 protocol of short range communication, data processing is realized based on ARM7 chips and peripheral hardware is designed to make the system workable.Result:The reader can read multiple tags at one time and effectively avoid collision. The data read can be sent to servers for further processing.Conclusion:This UHF RFID reader functions properly and it has a broad application prospect.
RFID; ISO18000-6 protocol; anti-collision algorithm
TP391.4
A
1008-1151(2015)02-0006-04
2015-01-10
蔣冠宇,清華大學在讀生。