基于EPC C1G2協(xié)議的RFID系統(tǒng)數(shù)據(jù)解碼
基于EPC C1G2協(xié)議的RFID系統(tǒng)數(shù)據(jù)解碼
1 前向鏈路數(shù)據(jù)解碼
EPC C1G2 協(xié)議下的 UHF RFID 系統(tǒng)讀寫器到電子標(biāo)簽90 的通信(即前向鏈路通信)編碼方式為脈沖間隔編碼(PIE, Pulse-interval encoding)。該碼的編碼方式是通過(guò)定義下降沿之間的不同寬度來(lái)表示不同的數(shù)據(jù)信號(hào)。具體編碼規(guī)則可查閱 EPC C1G2 協(xié)議,下面將討論 PIE 碼的解碼方法。
1.1 PIE碼的解碼
EPC C1G2 協(xié)議之所以采用 PIE 碼, 是因?yàn)?PIE 碼解碼具有唯一性,它通過(guò)脈沖間隔(Pulse Interval)長(zhǎng)度的不同來(lái)區(qū)分邏輯“0”和“1”,并且在任意一個(gè)字符數(shù)據(jù)的中間產(chǎn)生一次相位翻轉(zhuǎn)。極性翻轉(zhuǎn)特性使得編碼數(shù)據(jù)可以無(wú)二義性地進(jìn)行解碼,脈沖寬度大于參考脈沖寬度判為邏輯“1”;小于參考脈沖寬度判為邏輯“0”。參考脈沖寬度為邏輯“0”和“1” 脈沖寬度之和的一半[1]。所以在解碼的時(shí)候,需要不斷的獲得 PIE 碼數(shù)據(jù)中兩個(gè)下降沿(即低電平“0”)之間的間隔來(lái)進(jìn)行判斷,如果間隔為系統(tǒng)時(shí)鐘的一倍(即系統(tǒng)時(shí)鐘的二倍頻信號(hào)的兩倍),則接收數(shù)據(jù)為“0”;如果間隔為系統(tǒng)時(shí)鐘的二倍(即系統(tǒng)時(shí)鐘的二倍頻信號(hào)的四倍),則接收數(shù)據(jù)為 “1”[2]。因此,利用數(shù)字邏輯的基本原理實(shí)現(xiàn) PIE 碼解碼還比較困難的。但可以利用兩個(gè)下降沿之間的間隔和系統(tǒng)的時(shí)鐘之間的關(guān)系采用 VHDL 程序?qū)崿F(xiàn) PIE 碼的解碼,再下載到器件調(diào)試運(yùn)行。該方法已經(jīng)被廣泛的應(yīng)用,具體可參考相關(guān)文獻(xiàn)。
2 反向鏈路數(shù)據(jù)解碼
該系統(tǒng)電子標(biāo)簽到RFID讀寫器的通信(即反向鏈路通信) 編碼方式要么采用 FM0 碼(bi-phase space,其全稱為雙向間隔碼),要么采用密勒碼(Miller)以數(shù)據(jù)速率對(duì)子載波進(jìn)行
調(diào)制。具體至于采用何種編碼方式,這取決于讀寫器[3]。其中 FM0 碼工作原理是在一個(gè)位窗內(nèi)采用電平變化來(lái)表示邏輯。如果電平從位窗的起始處翻轉(zhuǎn),則表示邏輯“1”。如果電平除了在位窗的起始處翻轉(zhuǎn),還在位窗中間翻轉(zhuǎn)則表示邏輯 “0”[4]。而 Miller 碼也稱延遲調(diào)制碼,是一種變形雙向碼。其編碼規(guī)則:對(duì)原始符號(hào)“1”碼元起始不躍變,中心點(diǎn)出現(xiàn)躍變來(lái)表示,即用 10 或 01 表示。
2.1 FM0碼的解碼實(shí)現(xiàn)及仿真
傳統(tǒng)的 FM0 碼解碼一般利用數(shù)據(jù)“0”在信號(hào)周期中心有電平翻轉(zhuǎn),而數(shù)據(jù)“1”在整個(gè)信號(hào)周期都沒(méi)有電平翻轉(zhuǎn),從而進(jìn)行解碼。本文提出了一種新的 FM0 解碼方法,基本思想是將收到的每個(gè)數(shù)據(jù)信號(hào)前半周期和后半周期分別看作一個(gè)信號(hào),將收到的每個(gè)數(shù)據(jù)信號(hào)的前半周期合成一路信號(hào) X,將收到的每個(gè)數(shù)據(jù)信號(hào)的后半周期合成一路信號(hào) Y, 具體來(lái)說(shuō)分別將收到的信號(hào)與時(shí)鐘信號(hào)進(jìn)行邏輯與運(yùn)算和將收到的信號(hào)延時(shí)半個(gè)周期再與時(shí)鐘信號(hào)進(jìn)行邏輯與運(yùn)算,得到兩路信號(hào) X 和 Y;再將 X、Y 兩路信號(hào)取邏輯與得到信
號(hào) C1,與此同時(shí)X (X 的邏輯非)與Y (Y 的邏輯非)也進(jìn)行邏輯與運(yùn)算得到信號(hào) C2;最后將 C1 和 C2 兩路信號(hào)合并就得到了 FM0 碼的譯碼。如圖 1 所示為 simulink 平臺(tái)下 FM0 碼分解為兩路信號(hào)的實(shí)現(xiàn)模型,如圖 2 所示為 FM0 碼的整個(gè)編解碼實(shí)現(xiàn)的仿真模型。圖 3 所示為整個(gè)編解碼模型的 Scope 掃描波形。從圖中可知,該方案很好的實(shí)現(xiàn)了 FM0 的解碼,不過(guò)解碼后的信號(hào)與輸入信號(hào)之間存在兩個(gè)周期的時(shí)間延遲,但對(duì)整個(gè)解碼沒(méi)有大的影響
2.2 Miller碼的解碼實(shí)現(xiàn)及仿真
傳統(tǒng)的密勒碼解碼是根據(jù)一個(gè)同步時(shí)鐘和一個(gè)計(jì)數(shù)器計(jì)值來(lái)判斷輸出,通過(guò)對(duì)輸入信號(hào)進(jìn)行異或運(yùn)算,結(jié)合編碼特征,判斷輸出,實(shí)現(xiàn)比較復(fù)雜[6-7]。結(jié)合 Miller 碼編碼規(guī)則,運(yùn)用前面提出的方法,先將每位包含多個(gè)副載波周期的 Miller 碼與時(shí)鐘信號(hào)進(jìn)行邏輯異或運(yùn)算得到基帶 Miller 碼,然后將每個(gè)基帶 Miller 碼的前半個(gè)周期和后半個(gè)周期分為兩路信號(hào),再借助基本的邏輯器件即可實(shí)現(xiàn)譯碼。這比傳統(tǒng)的譯碼方式簡(jiǎn)單且高效。 如圖 4 為將包含多個(gè)副載波周期的Miller碼變換為基帶Miller碼的仿真模型。