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