射頻識(shí)別系統(tǒng)的防沖突算法改進(jìn)與實(shí)現(xiàn)
文章出處:http://56733.cn 作者:喻武龍,孟穎 人氣: 發(fā)表時(shí)間:2011年09月23日
1 引言
射頻識(shí)別技術(shù)(RFID)是一種非接觸式自動(dòng)識(shí)別技術(shù),它通過(guò)無(wú)線射頻方式對(duì)目標(biāo)加以識(shí)別并交換數(shù)據(jù),主要應(yīng)用于較短時(shí)間內(nèi)在射頻區(qū)域中識(shí)別一個(gè)目標(biāo)。當(dāng)多個(gè)電子標(biāo)簽同時(shí)到達(dá)射頻有效區(qū)域時(shí),標(biāo)簽會(huì)同時(shí)響應(yīng)讀寫(xiě)器指令并發(fā)送信號(hào),導(dǎo)致閱讀器不能正確接收數(shù)據(jù),也不能正確識(shí)別標(biāo)簽,發(fā)生沖突。需要一種可靠的防沖突(Anti-collision)算法,解決在識(shí)別多個(gè)電子標(biāo)簽時(shí)出現(xiàn)的數(shù)據(jù)沖突而導(dǎo)致閱讀器無(wú)法正確識(shí)別標(biāo)簽的問(wèn)題。
無(wú)源電子標(biāo)簽數(shù)字集成電路結(jié)構(gòu)框圖如圖1所示,主要由通信安全、信息安全、存儲(chǔ)以及控制等4個(gè)單元組成。其中防沖突模塊位于通信信息安全單元,用于解決多個(gè)標(biāo)簽與閱讀器進(jìn)行數(shù)據(jù)交換所引起的數(shù)據(jù)沖突問(wèn)題。
2 ALOHA算法
ALOHA算法足一種簡(jiǎn)便的防沖突算法,如圖2所示。它既沒(méi)有檢測(cè)機(jī)制也沒(méi)有恢復(fù)機(jī)制,只是以一定概率確保電子標(biāo)簽發(fā)出的信息準(zhǔn)確地被閱讀器接收。ALOHA算法僅用于只讀閱讀器,標(biāo)簽將數(shù)據(jù)(序列號(hào))傳輸給閱讀器,并且在一個(gè)周期中將數(shù)據(jù)不斷發(fā)送給閱讀器,數(shù)據(jù)傳輸時(shí)間只是重復(fù)時(shí)間的一小部分,使得在傳輸中產(chǎn)生相當(dāng)長(zhǎng)的間歇,因此,存在一定概率,使兩個(gè)應(yīng)答器可以在不同的時(shí)隙傳輸其數(shù)據(jù),從而避免沖突。
從圖2可以看到,閱讀器首先發(fā)送讀指令,處于射頻區(qū)域的多個(gè)標(biāo)簽收到指令,立即在隨后多個(gè)時(shí)隙中隨機(jī)選擇一個(gè)將信息上傳給閱讀器,并且標(biāo)簽在一個(gè)周期循環(huán)時(shí)隙內(nèi)完成數(shù)據(jù)上傳。增加時(shí)隙數(shù)量可降低RF終端發(fā)生沖突的概率,但是信道大部分時(shí)間將處于空閑狀態(tài),使得防沖突識(shí)別速度變慢。反之,減少時(shí)隙數(shù)量導(dǎo)致射頻終端沖突明顯增加。運(yùn)用時(shí)隙算法的關(guān)鍵在于尋找一個(gè)有效的折衷方案,使得防沖突的可靠性和速度滿足要求。隨著RFID系統(tǒng)復(fù)雜程度的加大,防沖突的可靠性顯著降低,沖突不可避免,所以這種沒(méi)有檢測(cè)恢復(fù)機(jī)制的抗沖突算法僅適用于簡(jiǎn)單系統(tǒng)。
3 二進(jìn)制搜索防沖突算法
ALOHA算法由于效率低,實(shí)際RFID系統(tǒng)并未采用,而是采用更加高效的二進(jìn)制搜索算法。二進(jìn)制搜索算法靈活,不會(huì)發(fā)生防沖突失敗情況。對(duì)于N個(gè)應(yīng)答器發(fā)生沖突的情況,最多只需要N-1次防沖突循環(huán)就能準(zhǔn)確識(shí)別出適合的應(yīng)答器。二進(jìn)制搜索算法的基本思想是閱讀器判斷出發(fā)送應(yīng)答器的序列號(hào)產(chǎn)生數(shù)據(jù)沖突位置。然后強(qiáng)制命令在沖突位置發(fā)送信息為"0"或"1"的應(yīng)答器退出沖突。當(dāng)N-1個(gè)應(yīng)答器退出沖突后信道則被剩下的一個(gè)應(yīng)答器完全占有并由閱讀器識(shí)別出。
為了防止數(shù)據(jù)沖突的發(fā)生,首先確定發(fā)生沖突的數(shù)據(jù)比特位的具體位置。這里使用Manchester編碼如圖3所示。這種編碼通過(guò)電平的上升沿和下降沿表示高、低電平。上升沿為邏輯"1",下降沿為邏輯"0",不存在狀態(tài)不變的情況。因此數(shù)據(jù)傳輸過(guò)程中檢測(cè)到編碼狀態(tài)不跳變,則認(rèn)為在數(shù)據(jù)傳輸過(guò)程中發(fā)生了沖突。兩個(gè)發(fā)生沖突的數(shù)據(jù)比特位必定有一個(gè)為邏輯"0",另一個(gè)為邏輯"1",這樣Manchester碼的上升沿和下降沿相互抵消,使接收器在持續(xù)時(shí)間內(nèi)接收到狀態(tài)持續(xù)不變的副載波信號(hào),即出現(xiàn)狀態(tài)不跳變,這在Manchester編碼中是不允許的,可以肯定該處出現(xiàn)了沖突。因此可以用這種方法按位跟蹤發(fā)生沖突的數(shù)據(jù)比特位的具體位置。
當(dāng)應(yīng)答器進(jìn)入射頻區(qū)域時(shí),閱讀器開(kāi)始針對(duì)所有的應(yīng)答器進(jìn)行檢測(cè)識(shí)別。其工作進(jìn)程主要有如下五個(gè)狀態(tài):
POWER OFF(斷電)狀態(tài):應(yīng)答器尚未獲得能量(未進(jìn)入閱讀器工作區(qū)),而處于斷電狀態(tài),因此也不能發(fā)射副載波:
IDLE(空閑)狀態(tài):應(yīng)答器進(jìn)入閱讀器工作區(qū),電磁場(chǎng)激活獲得能量,形成電壓,進(jìn)入空閑狀態(tài),同時(shí)能對(duì)已調(diào)制的信號(hào)解調(diào),并識(shí)別來(lái)自閱讀器的RE-QUEST命令和WAKE UP命令;
READY(就緒)狀態(tài):當(dāng)接收到一個(gè)有效的REQA或WAKE UP命令時(shí),進(jìn)入就緒狀態(tài),在該狀態(tài)采用防沖突方法,用UID(惟一標(biāo)識(shí)符)從多張IC卡中選擇出一張應(yīng)答器,此時(shí)該張應(yīng)答器就進(jìn)入ACTIVE(激活)狀態(tài);
ACTIVE(激活)狀態(tài):在本狀態(tài)完成本次應(yīng)用(一次交易)所要求的全部操作;
HALT(停止)狀態(tài):閱讀器完成一次交易后,處于停止?fàn)顟B(tài)。
應(yīng)答器各狀態(tài)間的轉(zhuǎn)換圖如圖4所示。
4 改進(jìn)后的防沖突算法實(shí)現(xiàn)步驟
這里采用SEL+NVB方式傳輸。SEL為指令碼,其代碼為93;NVB的前半字節(jié)表示字節(jié)數(shù),后半字節(jié)表示沖突的位置。
改進(jìn)后的算法具體實(shí)現(xiàn)步驟如下:
第1步:閱讀器分配SEL值,選定反沖突類型和級(jí)聯(lián)級(jí)數(shù);
第2步:閱讀器分配給NVB值'20'(定義了閱讀器將發(fā)出命令迫使場(chǎng)內(nèi)所有應(yīng)答器響應(yīng)完整的序列號(hào));
第3步:閱讀器發(fā)出SEL和NVB命令;
第4步:場(chǎng)內(nèi)所有應(yīng)答器以完整序列號(hào)響應(yīng);
第5步:假定場(chǎng)內(nèi)的應(yīng)答器都有唯一的序列號(hào),
則當(dāng)多個(gè)應(yīng)答器響應(yīng)時(shí),就會(huì)發(fā)生沖突。如果無(wú)沖突,第6步到第10步可以跳過(guò)。
第6步:閱讀器確認(rèn)第一個(gè)沖突的位置X并記錄下來(lái)。
第7步:閱讀器分配NVB值,其中NVB前半字節(jié)為該命令的字節(jié)數(shù),后半字節(jié)為沖突X的位置。
第8步:閱讀器發(fā)出SEL和NVB,要求應(yīng)答器中第X位為'1'的作出響應(yīng)。
第9步:只有該部分序列號(hào)中第X位為'1'的應(yīng)答器才會(huì)發(fā)出它們序列號(hào)剩余的部分。
第10步:若有沖突發(fā)生,第6~9步重復(fù)執(zhí)行。
第11步:若無(wú)沖突發(fā)生,閱讀器為NVB分配一個(gè)值'70'。
第12步:閱讀器發(fā)出SEL和NVB,要求應(yīng)答器傳送完整的序列號(hào)。
第13步:應(yīng)答器傳送完整的序列號(hào)、聞讀器收到后完成對(duì)該標(biāo)簽的識(shí)別工作。
改進(jìn)后的防沖突算法流程圖如圖5所示。
5 改進(jìn)后防沖突算法的仿真與實(shí)現(xiàn)
改進(jìn)后主要實(shí)現(xiàn)Manchester碼和防沖突算法。Manchester碼是一種適合傳輸?shù)幕鶐Тa型,是實(shí)現(xiàn)防沖突檢測(cè)所采用的碼型。Manchester編碼可用兩個(gè)不同相位的二進(jìn)制碼代替一個(gè)二進(jìn)制碼。而防沖突算法則是采用編寫(xiě)程序進(jìn)行算法驗(yàn)證。實(shí)驗(yàn)證明,算法正確。
6 結(jié)束語(yǔ)
改進(jìn)后的二進(jìn)制防沖突算法能夠?qū)⑸漕l區(qū)域內(nèi)的多個(gè)應(yīng)答器準(zhǔn)確地識(shí)別出來(lái),并且使系統(tǒng)的傳輸數(shù)據(jù)量和傳輸時(shí)間大大減少,有效節(jié)省了傳輸信道,這是其他算法難以達(dá)到的。因此,改進(jìn)后的二進(jìn)制防沖突算法比其他算法更準(zhǔn)確、更高效地解決射頻識(shí)別系統(tǒng)中的標(biāo)簽應(yīng)答數(shù)據(jù)沖突問(wèn)題。