黃麗亞,王鵬飛
(南京郵電大學電子科學與工程學院,江蘇南京210003)
RFID(radio frequency identification)技術是指以識別和數據交換為目的,利用感應、無線電波或微波進行非接觸雙向通信的自動識別技術,利用這種技術可以實現對所有物理對象的追蹤和管理[1]。而一個最基本的RFID系統包含標簽和閱讀器兩部分。其中標簽可以存儲數據,包含了相關物理對象的某些信息;閱讀器利用射頻技術與標簽通信,向標簽發送指令、寫入或讀取標簽數據,也可將數據向后臺傳輸。其中,閱讀器發送指令后,標簽回波采用FM0編碼方式。筆者提出了一種新的FM0解碼方法,將回波數據采樣與判決分開進行,防止了處理器進行中斷所可能帶來的解碼錯誤,提高了效率。
FM0(即Bi-Phase Space)編碼的全稱為雙相間隔碼編碼。它在一個碼元寬度內用不同的電平變化方式來表示不同的數據。如果電平碼元的起始處翻轉,則表示數據“1”;如果電平除了在碼元的起始處翻轉,還在碼元中間翻轉則表示數據“0”。即在FM0編碼中,電平翻轉發生在所有的符號位邊界,電平翻轉同時發生在被發送的數據0的正中間,生成的FM0序列如圖1所示[2]。

圖1 FM0編碼數據圖Fig.1 Schematic diagram of FM0 coding
ISO 18000-6C協議中規定,標簽到讀寫器的通信中參數可按需求設定。筆者用到的參數設定為:鏈路頻率LF=160 kHz,TRext=0,M=1。這樣,選定的碼元周期為6.25 μs,不加入12個連續0引導信號的FM0回波信號。
回波信號的導引頭如圖2所示[2],其中v碼是一個“壞”碼元,它本應在碼元起始位置發生電平翻轉。但這個v碼電平不翻轉從而表示這是導引頭,導引頭后是傳輸的信息數據。

圖2 FM0導引頭Fig.2 FM0 preamble code
本文用到的閱讀器由天線、射頻調制解調模塊、基帶信號處理模塊3部分構成。其中天線及射頻解調模塊工作原理框圖如圖3所示[3]。射頻接收機將標簽反饋的回波射頻信號直接下變頻到基帶,IQ兩路輸出數據接基帶信號處理模塊輸入引腳。

圖3 零中頻解調框圖Fig.3 Block diagram of zero-IF demodulator
基帶信號處理模塊核心芯片采用三星公司的S3C2440。它是以ARM9為核心的芯片組,工作頻率可達到200 MHz以上,內部時鐘工作在100 MHz,具有較強的數據處理能力[4]。利用S3C2440的GPIO引腳作為命令發送、FM0回波數據接收引腳。另外利用S3C2440的外部邊沿中斷引腳作為接收數據采樣的觸發引腳。最終構成的整個RFID系統框圖如圖4所示[3]。

圖4 RFID系統框圖Fig.4 Block diagram of RFID system
若碼元寬度T=6.25 μs,即數據1的持續時間為6.25 μs,數據0在第3.125 μs處出現電平翻轉。根據FM0碼的編碼特性,目前有兩種比較常用的解碼方法。
方法一是以電平翻轉的時刻為起點,首先延時T/4,采樣I/O口電平,保存該電平值,以用作后續判斷電平是否跳變,然后延時T/2后再次采樣I/O電平,并與前一次的采樣值進行比較,若電平翻轉則接收值為“0”,否則接收值為“1”。接收數據移位,通過檢測跳變獲知一位數據接收完成,數據移位8次接收一字節數據,重復上述操作直至接收完所有數據[5]。
這種方法的缺點很明顯。因為閱讀器頻段頻率很高,當在接收過程中出現頻率偏移的情況時,會造成位寬時間T較大的變化,而程序仍以固定的時間間隔3/4T去解碼,所以每次都會發生一定的偏移。根據協議,閱讀器將接收到標簽傳送過來的1個128字節的數據,這樣在解碼過程中,將出現累積偏移過多導致漏讀或多讀情況,從而產生誤判[6]。
方法二是利用芯片內部時鐘計數器,電平翻轉的瞬間邊沿觸發外部中斷,定時器計數寄存器開始計數。電平再次翻轉引發下一次中斷,此時通過計算定時器計數寄存器的值就可得到兩次翻轉之間的電平持續時間。從而判斷出該信號是數據1還是數據0[6]。
但是以上兩種方法還都存在一個問題:FM0回波信號的傳輸速率是160 kHz,即電平翻轉時間間隔是μs級的,而以上兩種方法均是采樣(定時)的同時判決信號數據,即需要在幾μs的時間內先后完成中斷→采樣(定時)→判決3個任務,如果處理器出現延遲過高,就會出現再次中斷而前一次數據還未判決結束的情況。因此,以上兩種方法的解碼都是存在風險的。
筆者提出一種新的方法:將采樣和判決分離開來,避免出現由以上原因出現的誤碼。新方法的采樣流程圖如圖5所示。一旦標簽回波反饋數據引起中斷,即開始采樣,直至采樣到標簽反饋數據的最后一位。將采樣后數據存入數組data[n],然后對data[n]中的數據進行判決,得到最終的反饋數據。將判決與采樣分離,減少誤碼。

圖5 數據采樣流程圖Fig.5 Flow chart of data sampling
3.3.1 采 樣間隔時間的選取
由于數據0在數據中央電平翻轉,因此要求采樣間隔小于T/2,否則會出現數據0判決為數據1的情況。為方便推導,在碼元周期是采樣間隔整數倍的數值,即T/3、T/4、T/5…一系列值中選取采樣間隔。在實驗中發現,由于噪聲干擾或者信號不穩定帶來的FM0回波失真,會讓T/3、T/4這兩個值得到的判決結果出現誤碼,因此本文選擇采樣間隔為T/5。
3.3.2 解 碼算法分析及編程思路
首先分析采樣數據。由FM0的編碼規則可知,正常的數據1的電平保持時間是數據0保持時間的兩倍(數據0的電平翻轉在正中央),又由于采樣的時間間隔是T/5,可以推得采樣后一個數據1是由4個或者5個連0或者連1表示的,即采樣后將會出現以下的4種情況,它們可以表示數據1:1)0000;2)1111;3)00000;4)11111。其中后兩種是極限情況,即數據1的第一次采樣時間恰好是電平翻轉的瞬間,因此5個連1或0的情況一般是在回波信號失真,即回波中數據1的脈沖寬度由于其他干擾被拉長了的情況下才會出現,其概率非常低。同理可得以下6種情況可表示數據0:1)0011;2)00111;3)00011;4)1100;5)11000;6)11100。其中2)、3)、5)、6)4種情況也是在回波信號失真的極限情況下才會發生,概率同樣很低。又由于ISO 18000-6C協議中規定,FM0回波的引導頭中有一個不按編碼規律進行電平翻轉的“v”碼,如圖2所示。此v碼的長度為1.5T,易知v碼采樣后,只會有以下兩種情況:1)0000000;2)1111111。
由以上對數據1、0和v的分析可以得到以下結論:按本文所述方法采樣后,對采樣數據進行判決時,連續電平采樣數據保持不變的個數小于等于3,則此數據應判決為0;大于等于6的應判決為v;其余為1。經以上分析可以得到數據判決程序Judge(data[],data_length)。例如采樣后的數據1111001100001100000001111經過Judge(data[],data_length)函數后生成的判決數據為1010v1,即FM0引導頭。
此算法應注意的是在判決數據0時,由于數據0的采樣數據是由兩段小于等于3的連1或0構成的,因此需要在編程時忽略第二段連1或0,否則判決后會出現一個不應存在的0。同樣需要注意的是在v碼之前的那個數據0的判決。
針對以上FM0解碼方法,本文進行了實驗驗證。RFID讀卡器基帶編解碼模塊的硬件環境是由兩塊三星公司的S3C2440芯片開發板所構成的,如圖6所示。其中的ARM1(位于圖6上部)作為RFID讀寫器的基帶數據處理模塊。將ARM2用來模擬標簽反饋信號的信號源,模擬標簽的FM0回波反饋信號,將其輸出的反饋信號分別接ARM1的外部邊沿中斷引腳及數據輸入引腳,循環發送FM0信號的引導頭,示波器截得模擬的標簽反饋信號波形如圖7所示。

圖6 硬件環境Fig.6 Hardware environment

圖7 循環發送的FM0信號的導引頭Fig.7 Preamble code of circulating sent signal FM0
ARM1對接收信號進行數據處理,將得到的解碼后的結果通過串口發送到PC機上,如圖8所示。實驗結果顯示,本文的FM0解碼算法能正確的將FM0信號解碼。

圖8 數據處理信息Fig.8 Data processing information
在RFID系統的設計中,標簽回波信號的正確解碼是至關重要的。這要求讀寫器基帶模塊采樣和判決時誤碼率要盡可能低。利用本文提出的解碼算法進行循環發送FM0導引頭而后對其解碼的實驗,結果顯示誤碼率低于2‰。此算法的核心思路是將數據采樣和數據判決分離開來,并在判決時利用不同數據采樣值保持不變的個數相互不同的特點而進行正確的解碼,從而避免了由于采樣和判決相互影響所帶來的誤碼,而且判決方法快速簡單,因此讀卡效率也得以提高。
[1]游戰清,李蘇劍.無線射頻識別技術(RFID)理論與應用[M].北京:電子工業出版社,2004.
[2]ISO/IEC JTC//SC31N.ISO/IEC 1800-6 C.Information technology-Radio frequency identification foritem management part 6 Parameters for air interface cormmunications at 860 MHz 960 MHz[S].2006.
[3]王圣禮.超高頻射頻識別(RFID)閱讀器的設計與實現[D].杭州:浙江大學,2008.
[4]楊水清,張劍,施云飛.ARM嵌入式Linux系統開發技術詳解[M].北京:電子工業出版社,2008.
[5]山寶銀,陳俊杰.ETC電子標簽的FM0編解碼設計與實現[J].微計算機信息,2010,26(35):151-152,94.
SHAN Bao-yin,CHEN Jun-jie.Design and implementation of FM0 encode and decode applied in ETC tag[J].Microcompute Information,2010,26(35):151-152,94.
[6]梁飛,張紅雨,陳友平.UHF讀寫器設計中的FM0解碼技術[J].電子設計工程,2010,18(11):172-174.
LIANG Fei,ZHANG Hong-yu,CHEN You-ping.Decoding FM0 technology in UHF interrogator design[J].Electronic Design Engineering,2010,18(11):172-174.