黃麗亞,王鵬飛
(南京郵電大學電子科學與工程學院,江蘇南京210003)
RFID(radio frequency identification)技術是指以識別和數(shù)據(jù)交換為目的,利用感應、無線電波或微波進行非接觸雙向通信的自動識別技術,利用這種技術可以實現(xiàn)對所有物理對象的追蹤和管理[1]。而一個最基本的RFID系統(tǒng)包含標簽和閱讀器兩部分。其中標簽可以存儲數(shù)據(jù),包含了相關物理對象的某些信息;閱讀器利用射頻技術與標簽通信,向標簽發(fā)送指令、寫入或讀取標簽數(shù)據(jù),也可將數(shù)據(jù)向后臺傳輸。其中,閱讀器發(fā)送指令后,標簽回波采用FM0編碼方式。筆者提出了一種新的FM0解碼方法,將回波數(shù)據(jù)采樣與判決分開進行,防止了處理器進行中斷所可能帶來的解碼錯誤,提高了效率。
FM0(即Bi-Phase Space)編碼的全稱為雙相間隔碼編碼。它在一個碼元寬度內(nèi)用不同的電平變化方式來表示不同的數(shù)據(jù)。如果電平碼元的起始處翻轉,則表示數(shù)據(jù)“1”;如果電平除了在碼元的起始處翻轉,還在碼元中間翻轉則表示數(shù)據(jù)“0”。即在FM0編碼中,電平翻轉發(fā)生在所有的符號位邊界,電平翻轉同時發(fā)生在被發(fā)送的數(shù)據(jù)0的正中間,生成的FM0序列如圖1所示[2]。
圖1 FM0編碼數(shù)據(jù)圖Fig.1 Schematic diagram of FM0 coding
ISO 18000-6C協(xié)議中規(guī)定,標簽到讀寫器的通信中參數(shù)可按需求設定。筆者用到的參數(shù)設定為:鏈路頻率LF=160 kHz,TRext=0,M=1。這樣,選定的碼元周期為6.25 μs,不加入12個連續(xù)0引導信號的FM0回波信號。
回波信號的導引頭如圖2所示[2],其中v碼是一個“壞”碼元,它本應在碼元起始位置發(fā)生電平翻轉。但這個v碼電平不翻轉從而表示這是導引頭,導引頭后是傳輸?shù)男畔?shù)據(jù)。
圖2 FM0導引頭Fig.2 FM0 preamble code
本文用到的閱讀器由天線、射頻調(diào)制解調(diào)模塊、基帶信號處理模塊3部分構成。其中天線及射頻解調(diào)模塊工作原理框圖如圖3所示[3]。射頻接收機將標簽反饋的回波射頻信號直接下變頻到基帶,IQ兩路輸出數(shù)據(jù)接基帶信號處理模塊輸入引腳。
圖3 零中頻解調(diào)框圖Fig.3 Block diagram of zero-IF demodulator
基帶信號處理模塊核心芯片采用三星公司的S3C2440。它是以ARM9為核心的芯片組,工作頻率可達到200 MHz以上,內(nèi)部時鐘工作在100 MHz,具有較強的數(shù)據(jù)處理能力[4]。利用S3C2440的GPIO引腳作為命令發(fā)送、FM0回波數(shù)據(jù)接收引腳。另外利用S3C2440的外部邊沿中斷引腳作為接收數(shù)據(jù)采樣的觸發(fā)引腳。最終構成的整個RFID系統(tǒng)框圖如圖4所示[3]。
圖4 RFID系統(tǒng)框圖Fig.4 Block diagram of RFID system
若碼元寬度T=6.25 μs,即數(shù)據(jù)1的持續(xù)時間為6.25 μs,數(shù)據(jù)0在第3.125 μs處出現(xiàn)電平翻轉。根據(jù)FM0碼的編碼特性,目前有兩種比較常用的解碼方法。
方法一是以電平翻轉的時刻為起點,首先延時T/4,采樣I/O口電平,保存該電平值,以用作后續(xù)判斷電平是否跳變,然后延時T/2后再次采樣I/O電平,并與前一次的采樣值進行比較,若電平翻轉則接收值為“0”,否則接收值為“1”。接收數(shù)據(jù)移位,通過檢測跳變獲知一位數(shù)據(jù)接收完成,數(shù)據(jù)移位8次接收一字節(jié)數(shù)據(jù),重復上述操作直至接收完所有數(shù)據(jù)[5]。
這種方法的缺點很明顯。因為閱讀器頻段頻率很高,當在接收過程中出現(xiàn)頻率偏移的情況時,會造成位寬時間T較大的變化,而程序仍以固定的時間間隔3/4T去解碼,所以每次都會發(fā)生一定的偏移。根據(jù)協(xié)議,閱讀器將接收到標簽傳送過來的1個128字節(jié)的數(shù)據(jù),這樣在解碼過程中,將出現(xiàn)累積偏移過多導致漏讀或多讀情況,從而產(chǎn)生誤判[6]。
方法二是利用芯片內(nèi)部時鐘計數(shù)器,電平翻轉的瞬間邊沿觸發(fā)外部中斷,定時器計數(shù)寄存器開始計數(shù)。電平再次翻轉引發(fā)下一次中斷,此時通過計算定時器計數(shù)寄存器的值就可得到兩次翻轉之間的電平持續(xù)時間。從而判斷出該信號是數(shù)據(jù)1還是數(shù)據(jù)0[6]。
但是以上兩種方法還都存在一個問題:FM0回波信號的傳輸速率是160 kHz,即電平翻轉時間間隔是μs級的,而以上兩種方法均是采樣(定時)的同時判決信號數(shù)據(jù),即需要在幾μs的時間內(nèi)先后完成中斷→采樣(定時)→判決3個任務,如果處理器出現(xiàn)延遲過高,就會出現(xiàn)再次中斷而前一次數(shù)據(jù)還未判決結束的情況。因此,以上兩種方法的解碼都是存在風險的。
筆者提出一種新的方法:將采樣和判決分離開來,避免出現(xiàn)由以上原因出現(xiàn)的誤碼。新方法的采樣流程圖如圖5所示。一旦標簽回波反饋數(shù)據(jù)引起中斷,即開始采樣,直至采樣到標簽反饋數(shù)據(jù)的最后一位。將采樣后數(shù)據(jù)存入數(shù)組data[n],然后對data[n]中的數(shù)據(jù)進行判決,得到最終的反饋數(shù)據(jù)。將判決與采樣分離,減少誤碼。
圖5 數(shù)據(jù)采樣流程圖Fig.5 Flow chart of data sampling
3.3.1 采 樣間隔時間的選取
由于數(shù)據(jù)0在數(shù)據(jù)中央電平翻轉,因此要求采樣間隔小于T/2,否則會出現(xiàn)數(shù)據(jù)0判決為數(shù)據(jù)1的情況。為方便推導,在碼元周期是采樣間隔整數(shù)倍的數(shù)值,即T/3、T/4、T/5…一系列值中選取采樣間隔。在實驗中發(fā)現(xiàn),由于噪聲干擾或者信號不穩(wěn)定帶來的FM0回波失真,會讓T/3、T/4這兩個值得到的判決結果出現(xiàn)誤碼,因此本文選擇采樣間隔為T/5。
3.3.2 解 碼算法分析及編程思路
首先分析采樣數(shù)據(jù)。由FM0的編碼規(guī)則可知,正常的數(shù)據(jù)1的電平保持時間是數(shù)據(jù)0保持時間的兩倍(數(shù)據(jù)0的電平翻轉在正中央),又由于采樣的時間間隔是T/5,可以推得采樣后一個數(shù)據(jù)1是由4個或者5個連0或者連1表示的,即采樣后將會出現(xiàn)以下的4種情況,它們可以表示數(shù)據(jù)1:1)0000;2)1111;3)00000;4)11111。其中后兩種是極限情況,即數(shù)據(jù)1的第一次采樣時間恰好是電平翻轉的瞬間,因此5個連1或0的情況一般是在回波信號失真,即回波中數(shù)據(jù)1的脈沖寬度由于其他干擾被拉長了的情況下才會出現(xiàn),其概率非常低。同理可得以下6種情況可表示數(shù)據(jù)0:1)0011;2)00111;3)00011;4)1100;5)11000;6)11100。其中2)、3)、5)、6)4種情況也是在回波信號失真的極限情況下才會發(fā)生,概率同樣很低。又由于ISO 18000-6C協(xié)議中規(guī)定,F(xiàn)M0回波的引導頭中有一個不按編碼規(guī)律進行電平翻轉的“v”碼,如圖2所示。此v碼的長度為1.5T,易知v碼采樣后,只會有以下兩種情況:1)0000000;2)1111111。
由以上對數(shù)據(jù)1、0和v的分析可以得到以下結論:按本文所述方法采樣后,對采樣數(shù)據(jù)進行判決時,連續(xù)電平采樣數(shù)據(jù)保持不變的個數(shù)小于等于3,則此數(shù)據(jù)應判決為0;大于等于6的應判決為v;其余為1。經(jīng)以上分析可以得到數(shù)據(jù)判決程序Judge(data[],data_length)。例如采樣后的數(shù)據(jù)1111001100001100000001111經(jīng)過Judge(data[],data_length)函數(shù)后生成的判決數(shù)據(jù)為1010v1,即FM0引導頭。
此算法應注意的是在判決數(shù)據(jù)0時,由于數(shù)據(jù)0的采樣數(shù)據(jù)是由兩段小于等于3的連1或0構成的,因此需要在編程時忽略第二段連1或0,否則判決后會出現(xiàn)一個不應存在的0。同樣需要注意的是在v碼之前的那個數(shù)據(jù)0的判決。
針對以上FM0解碼方法,本文進行了實驗驗證。RFID讀卡器基帶編解碼模塊的硬件環(huán)境是由兩塊三星公司的S3C2440芯片開發(fā)板所構成的,如圖6所示。其中的ARM1(位于圖6上部)作為RFID讀寫器的基帶數(shù)據(jù)處理模塊。將ARM2用來模擬標簽反饋信號的信號源,模擬標簽的FM0回波反饋信號,將其輸出的反饋信號分別接ARM1的外部邊沿中斷引腳及數(shù)據(jù)輸入引腳,循環(huán)發(fā)送FM0信號的引導頭,示波器截得模擬的標簽反饋信號波形如圖7所示。
圖6 硬件環(huán)境Fig.6 Hardware environment
圖7 循環(huán)發(fā)送的FM0信號的導引頭Fig.7 Preamble code of circulating sent signal FM0
ARM1對接收信號進行數(shù)據(jù)處理,將得到的解碼后的結果通過串口發(fā)送到PC機上,如圖8所示。實驗結果顯示,本文的FM0解碼算法能正確的將FM0信號解碼。
圖8 數(shù)據(jù)處理信息Fig.8 Data processing information
在RFID系統(tǒng)的設計中,標簽回波信號的正確解碼是至關重要的。這要求讀寫器基帶模塊采樣和判決時誤碼率要盡可能低。利用本文提出的解碼算法進行循環(huán)發(fā)送FM0導引頭而后對其解碼的實驗,結果顯示誤碼率低于2‰。此算法的核心思路是將數(shù)據(jù)采樣和數(shù)據(jù)判決分離開來,并在判決時利用不同數(shù)據(jù)采樣值保持不變的個數(shù)相互不同的特點而進行正確的解碼,從而避免了由于采樣和判決相互影響所帶來的誤碼,而且判決方法快速簡單,因此讀卡效率也得以提高。
[1]游戰(zhàn)清,李蘇劍.無線射頻識別技術(RFID)理論與應用[M].北京:電子工業(yè)出版社,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)閱讀器的設計與實現(xiàn)[D].杭州:浙江大學,2008.
[4]楊水清,張劍,施云飛.ARM嵌入式Linux系統(tǒng)開發(fā)技術詳解[M].北京:電子工業(yè)出版社,2008.
[5]山寶銀,陳俊杰.ETC電子標簽的FM0編解碼設計與實現(xiàn)[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.