物聯(lián)傳媒 旗下網(wǎng)站
登錄 注冊

一種改進的RFID中的密勒解碼方法

作者:方洪燦,張福洪,陳勝康
來源:RFID世界網(wǎng)
日期:2015-07-02 16:38:11
摘要:在分析密勒調(diào)制副載波技術(shù)的基礎(chǔ)上,根據(jù)其編碼特征,設(shè)計了一種簡單的解碼器。首先對來自標(biāo)簽的突發(fā)數(shù)據(jù)幀進行異或運算,然后根據(jù)異或運算結(jié)果解碼,最后根據(jù)解出碼判斷數(shù)據(jù)幀的開始與結(jié)束。

  超高頻射頻識別UHF RFID技術(shù)具有可讀距離長、閱讀速度快、防碰撞能力強及作用范圍廣的特點,可廣泛應(yīng)用于物流管理、交通管理、物品跟蹤等領(lǐng)域。在實際應(yīng)用中,為實現(xiàn)電子標(biāo)簽和讀寫器之間的數(shù)據(jù)通信,需要對數(shù)據(jù)進行編碼。密勒(Miller)編碼含有豐富的時鐘信息且具有較好的抗干擾能力,因此是RFID中進行數(shù)據(jù)通信的優(yōu)選碼型。為改善讀寫器在擁堵環(huán)境或容易發(fā)生干擾環(huán)境中的工作能力,ISO/IEC 18000-6C協(xié)議規(guī)定,電子標(biāo)簽返回讀寫器的數(shù)據(jù)除可以選用FM0編碼外,還可以選用密勒調(diào)制副載波序列(M=2、4、8),以改變編碼速率[3]。在射頻通信領(lǐng)域,有少量文獻對密勒解碼進行研究,但總體上缺乏對密勒解碼技術(shù)尤其是對密勒調(diào)制副載波序列解碼技術(shù)的詳細(xì)研究。本文分析ISO/IEC 18000-6C協(xié)議中采用的密勒調(diào)制副載波技術(shù),設(shè)計并實現(xiàn)一種符合該協(xié)議的密勒解碼器。

  1 密勒碼[3]

  1.1 Miller基本功能和狀態(tài)圖

  圖1顯示了生成Miller編碼的基本功能和狀態(tài)圖?;鶐iller按順序在2個數(shù)據(jù)0之間變換相位?;鶐iller還在數(shù)據(jù)1符號的中間放置一個相轉(zhuǎn)化。圖1(b)所示的狀態(tài)圖描繪了基帶Miller基本功能的邏輯數(shù)據(jù)序列。S1~S4狀態(tài)標(biāo)記表明4種可能的Miller編碼符號,代表各Miller碼基本功能的2個相位。這些狀態(tài)標(biāo)簽還表示鍵入狀態(tài)后即傳輸?shù)腗iller波形。狀態(tài)轉(zhuǎn)換標(biāo)簽表示被編碼的數(shù)據(jù)序列的邏輯值。例如,從狀態(tài)S2轉(zhuǎn)換到狀態(tài)S3是不允許的,因為由此產(chǎn)生的傳輸在數(shù)據(jù)0和數(shù)據(jù)1之間的符號邊界上沒有相轉(zhuǎn)化。圖1(b)所示的狀態(tài)圖不暗示任何特殊執(zhí)行。

   一種改進的RFID中的密勒解碼方法

  1.2 副載波序列和結(jié)尾特征

  Miller調(diào)制副載波序列,每位應(yīng)包含2、4或8個副載波周期,具體情況視啟動該盤存周期的Query命令規(guī)定的M值而定。在調(diào)制器輸出時測得的0或1符號的工作循環(huán)最低為45%,最高為55%,標(biāo)稱值為50%。Miller發(fā)信應(yīng)始終在每次傳輸結(jié)束時以“dummy”數(shù)據(jù)-1結(jié)尾[3]。

  2 解碼器的設(shè)計與實現(xiàn)

  傳統(tǒng)的密勒解碼是根據(jù)一個同步時鐘和一個計數(shù)器計值來判斷輸出,通過對輸入信號進行異或運算,結(jié)合編碼特征,判斷輸出,實現(xiàn)比較復(fù)雜。

  2.1 異或運算

  首先,通過時鐘的上升沿來激勵,一旦數(shù)據(jù)開始,就將輸入的數(shù)據(jù)與時鐘異或。如圖2,M=2(2個副載波周期),輸入data_in(010111000),與clk異或,結(jié)果就是re_mark。re_mark的波形與圖1 Miller基本功能的波形相似,從而可以解出的碼為‘010111000’,如圖2。

   一種改進的RFID中的密勒解碼方法

  2.2 密勒解碼

  整個解碼過程用一個有限狀態(tài)機控制,圖3為解碼狀態(tài)機的程序說明圖。M_value的值表示副載波周期的個數(shù),計數(shù)器counter用來記錄clk的周期數(shù),pre_one記錄當(dāng)讀到re_mark=1時,之前有幾個re_mark=1,pre_zero記錄當(dāng)讀到re_mark=0時,之前有幾個re_mark=0。其中State<={M_value,counter,pre_one,pre_zero}。

   一種改進的RFID中的密勒解碼方法

  2.3 幀頭檢測

  根據(jù)Miller副載波前同步碼的特性,解碼出的數(shù)據(jù)首先要進行前同步碼的檢測。程序中定義2個寄存器TRext、register。前同步碼的幀頭0的個數(shù)由TRext所決定。幀頭檢測模塊如圖4。當(dāng)幀頭檢測到時,輸出data_begin_valid=1,否則data_begin_valid=0。

   一種改進的RFID中的密勒解碼方法

  2.4 數(shù)據(jù)零的相位判斷

  根據(jù)編碼特征:符號‘0’期間不發(fā)生相位翻轉(zhuǎn);符號‘1’中間處發(fā)生相位翻轉(zhuǎn);只有在相鄰符號都為‘0’時,符號分界處才發(fā)生相位翻轉(zhuǎn),解出的碼,要進行0相位的判斷。

  2.4.1 數(shù)據(jù)存儲

  模塊的程序流程圖如圖5。其中newdata0_zero_flag、newdata1_zero_flag、zero_flag、one_flag來自解碼模塊。newdata0_zero_flag是數(shù)據(jù)0由連續(xù)低電平解碼的標(biāo)志位;newdata1_zero_flag是數(shù)據(jù)0由連續(xù)高電平解碼的標(biāo)志位;zero_flag是數(shù)據(jù)0的標(biāo)志位;one_flag是數(shù)據(jù)1的標(biāo)志位。

   一種改進的RFID中的密勒解碼方法

  2.4.2 相位判斷

  數(shù)據(jù)儲存模塊有2個功能,一個功能是儲存用于幀頭檢測的數(shù)據(jù),另一個功能用于零相位的判斷。其中寄存器data_begin_valid、counter_zero0、counter_zero1、zero_flag、data_valid來自數(shù)據(jù)存儲模塊。counter_zero0表示連續(xù)幾個時鐘周期(具體個數(shù),由M_value決定)的低電平而輸出的解碼數(shù)據(jù)0。counter_zero1表示連續(xù)幾個時鐘周期(具體個數(shù),由M_value決定)的高電平而輸出的解碼數(shù)據(jù)0。模塊程序流程圖如圖6。

   一種改進的RFID中的密勒解碼方法

  2.4.3 幀尾檢測

  解碼過程中,當(dāng)輸出數(shù)據(jù)為100時,如果符號0之間發(fā)生相位翻轉(zhuǎn)了,則error=0,反之,error=1。之后再判斷解碼數(shù)據(jù)是否為連續(xù)的低電平。如果是,則判斷1為結(jié)束位,反之則判斷相位翻轉(zhuǎn)錯誤。輸出data_over脈沖表示解碼結(jié)束,同時error=1,然后停止解碼,等待下一幀數(shù)據(jù)的到來。

  2.5 解碼器的實現(xiàn)

  數(shù)據(jù)由data_in輸入,由data_begin控制數(shù)據(jù)的開始;由data_out輸出,同時data_out_valid必須等于1,error必須等于0,否則0的相位有錯。整個模塊如圖7。

   一種改進的RFID中的密勒解碼方法

  3 仿真結(jié)果

  本文設(shè)計的密勒調(diào)制副載波序列解碼器采用數(shù)字邏輯設(shè)計,用Verilog HDL對該方法進行編程實現(xiàn)。為了驗證設(shè)計的正確性,本文使用Altera的Quartus II(V6.1)對設(shè)計進行電路綜合。 由于前同步碼格式,副載波數(shù)取值的難易關(guān)系到仿真圖的坐標(biāo)長短,本文為便于解釋,M取2,即M_value=0,TRext=0。

  3.1 幀頭檢測測試

  當(dāng)檢測到幀頭時,輸出data_begin_valid=1。如果輸入data_in只是一個前同步碼,則data_begin_valid輸出,如圖8。

   一種改進的RFID中的密勒解碼方法

  3.2 數(shù)據(jù)輸出仿真結(jié)果

  數(shù)據(jù)‘10110001’從同步碼后輸入,即從215 ns后輸入。解碼后,從端口data_out輸出,如圖9。同時data_out_valid必須為高電平,error必須為低電平。每來一個時鐘上升沿,從端口讀取解碼后的數(shù)據(jù)。

   一種改進的RFID中的密勒解碼方法

  3.3 相位出錯仿真

  數(shù)據(jù)從395 ns之后就輸入一串如同時鐘一樣的電平。根據(jù)編碼特性,符號0之間必須相位翻轉(zhuǎn),否者就違反編碼規(guī)則。數(shù)據(jù)符號0之間沒有相位翻轉(zhuǎn),結(jié)果仿真就輸出error置高電平了,如圖10。

   一種改進的RFID中的密勒解碼方法

  3.4 幀尾檢測仿真

  幀尾檢測,用到一個5位的寄存器register_data。其功能是存儲解碼輸出數(shù)據(jù),一旦出現(xiàn)error=1,便判斷其存儲值是否為‘10000’。結(jié)果為1就是結(jié)束標(biāo)志。從395 ns后,輸入1,之后的數(shù)據(jù)如同時鐘數(shù)據(jù)。符號0相位未翻轉(zhuǎn),之后再存儲幾個解碼數(shù)據(jù),判斷是相位翻轉(zhuǎn)錯誤還是幀結(jié)尾標(biāo)志。如圖11,出現(xiàn)了幀結(jié)尾標(biāo)志。

   一種改進的RFID中的密勒解碼方法

  本文分析了應(yīng)用于超高頻RFID數(shù)據(jù)通信的密勒調(diào)制副載波技術(shù)的特點,并基于該特點設(shè)計了一種密勒調(diào)制副載波序列解碼器。該設(shè)計采用硬件描述語言編程實現(xiàn),并進行FPGA硬件驗證。硬件測試結(jié)果驗證了該方法能夠正確地對副載波密勒編碼數(shù)據(jù)進行解碼。