摘 要: 在分析密勒調(diào)制副載波技術(shù)的基礎(chǔ)上,,根據(jù)其編碼特征,設(shè)計(jì)了一種簡(jiǎn)單的解碼器,。首先對(duì)來(lái)自標(biāo)簽的突發(fā)數(shù)據(jù)幀進(jìn)行異或運(yùn)算,,然后根據(jù)異或運(yùn)算結(jié)果解碼,最后根據(jù)解出碼判斷數(shù)據(jù)幀的開(kāi)始與結(jié)束,。
關(guān)鍵詞: Verilog HDL,;密勒碼;異或運(yùn)算,;仿真
超高頻射頻識(shí)別UHF RFID技術(shù)具有可讀距離長(zhǎng),、閱讀速度快,、防碰撞能力強(qiáng)及作用范圍廣的特點(diǎn),可廣泛應(yīng)用于物流管理,、交通管理,、物品跟蹤等領(lǐng)域。在實(shí)際應(yīng)用中,,為實(shí)現(xiàn)電子標(biāo)簽和讀寫器之間的數(shù)據(jù)通信,需要對(duì)數(shù)據(jù)進(jìn)行編碼,。密勒(Miller)編碼含有豐富的時(shí)鐘信息且具有較好的抗干擾能力,,因此是RFID中進(jìn)行數(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)域,,有少量文獻(xiàn)對(duì)密勒解碼進(jìn)行研究,但總體上缺乏對(duì)密勒解碼技術(shù)尤其是對(duì)密勒調(diào)制副載波序列解碼技術(shù)的詳細(xì)研究,。本文分析ISO/IEC 18000-6C協(xié)議中采用的密勒調(diào)制副載波技術(shù),,設(shè)計(jì)并實(shí)現(xiàn)一種符合該協(xié)議的密勒解碼器。
1 密勒碼[3]
1.1 Miller基本功能和狀態(tài)圖
圖1顯示了生成Miller編碼的基本功能和狀態(tài)圖,?;鶐iller按順序在2個(gè)數(shù)據(jù)0之間變換相位?;鶐iller還在數(shù)據(jù)1符號(hào)的中間放置一個(gè)相轉(zhuǎn)化,。圖1(b)所示的狀態(tài)圖描繪了基帶Miller基本功能的邏輯數(shù)據(jù)序列。S1~S4狀態(tài)標(biāo)記表明4種可能的Miller編碼符號(hào),,代表各Miller碼基本功能的2個(gè)相位,。這些狀態(tài)標(biāo)簽還表示鍵入狀態(tài)后即傳輸?shù)腗iller波形。狀態(tài)轉(zhuǎn)換標(biāo)簽表示被編碼的數(shù)據(jù)序列的邏輯值,。例如,,從狀態(tài)S2轉(zhuǎn)換到狀態(tài)S3是不允許的,因?yàn)橛纱水a(chǎn)生的傳輸在數(shù)據(jù)0和數(shù)據(jù)1之間的符號(hào)邊界上沒(méi)有相轉(zhuǎn)化,。圖1(b)所示的狀態(tài)圖不暗示任何特殊執(zhí)行,。
1.2 副載波序列和結(jié)尾特征
Miller調(diào)制副載波序列,每位應(yīng)包含2,、4或8個(gè)副載波周期,,具體情況視啟動(dòng)該盤存周期的Query命令規(guī)定的M值而定,。在調(diào)制器輸出時(shí)測(cè)得的0或1符號(hào)的工作循環(huán)最低為45%,最高為55%,,標(biāo)稱值為50%,。Miller發(fā)信應(yīng)始終在每次傳輸結(jié)束時(shí)以“dummy”數(shù)據(jù)-1結(jié)尾[3]。
2 解碼器的設(shè)計(jì)與實(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ù)雜,。
2.1 異或運(yùn)算
首先,通過(guò)時(shí)鐘的上升沿來(lái)激勵(lì),,一旦數(shù)據(jù)開(kāi)始,,就將輸入的數(shù)據(jù)與時(shí)鐘異或。如圖2,,M=2(2個(gè)副載波周期),,輸入data_in(010111000),與clk異或,,結(jié)果就是re_mark,。re_mark的波形與圖1 Miller基本功能的波形相似,從而可以解出的碼為‘010111000’,,如圖2,。
2.2 密勒解碼
整個(gè)解碼過(guò)程用一個(gè)有限狀態(tài)機(jī)控制,圖3為解碼狀態(tài)機(jī)的程序說(shuō)明圖,。M_value的值表示副載波周期的個(gè)數(shù),,計(jì)數(shù)器counter用來(lái)記錄clk的周期數(shù),pre_one記錄當(dāng)讀到re_mark=1時(shí),,之前有幾個(gè)re_mark=1,,pre_zero記錄當(dāng)讀到re_mark=0時(shí),之前有幾個(gè)re_mark=0,。其中State<={M_value,,counter,pre_one,,pre_zero},。
2.3 幀頭檢測(cè)
根據(jù)Miller副載波前同步碼的特性,解碼出的數(shù)據(jù)首先要進(jìn)行前同步碼的檢測(cè),。程序中定義2個(gè)寄存器TRext,、register。前同步碼的幀頭0的個(gè)數(shù)由TRext所決定,。幀頭檢測(cè)模塊如圖4,。當(dāng)幀頭檢測(cè)到時(shí),,輸出data_begin_valid=1,否則data_begin_valid=0,。
2.4 數(shù)據(jù)零的相位判斷
根據(jù)編碼特征:符號(hào)‘0’期間不發(fā)生相位翻轉(zhuǎn),;符號(hào)‘1’中間處發(fā)生相位翻轉(zhuǎn);只有在相鄰符號(hào)都為‘0’時(shí),,符號(hào)分界處才發(fā)生相位翻轉(zhuǎn),,解出的碼,要進(jìn)行0相位的判斷,。
2.4.1 數(shù)據(jù)存儲(chǔ)
模塊的程序流程圖如圖5,。其中newdata0_zero_flag、newdata1_zero_flag,、zero_flag、one_flag來(lái)自解碼模塊,。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)志位,。
2.4.2 相位判斷
數(shù)據(jù)儲(chǔ)存模塊有2個(gè)功能,一個(gè)功能是儲(chǔ)存用于幀頭檢測(cè)的數(shù)據(jù),,另一個(gè)功能用于零相位的判斷,。其中寄存器data_begin_valid、counter_zero0,、counter_zero1,、zero_flag、data_valid來(lái)自數(shù)據(jù)存儲(chǔ)模塊,。counter_zero0表示連續(xù)幾個(gè)時(shí)鐘周期(具體個(gè)數(shù),,由M_value決定)的低電平而輸出的解碼數(shù)據(jù)0。counter_zero1表示連續(xù)幾個(gè)時(shí)鐘周期(具體個(gè)數(shù),,由M_value決定)的高電平而輸出的解碼數(shù)據(jù)0,。模塊程序流程圖如圖6。
2.4.3 幀尾檢測(cè)
解碼過(guò)程中,,當(dāng)輸出數(shù)據(jù)為100時(shí),,如果符號(hào)0之間發(fā)生相位翻轉(zhuǎn)了,則error=0,反之,,error=1,。之后再判斷解碼數(shù)據(jù)是否為連續(xù)的低電平。如果是,,則判斷1為結(jié)束位,,反之則判斷相位翻轉(zhuǎn)錯(cuò)誤,。輸出data_over脈沖表示解碼結(jié)束,同時(shí)error=1,,然后停止解碼,,等待下一幀數(shù)據(jù)的到來(lái)。
2.5 解碼器的實(shí)現(xiàn)
數(shù)據(jù)由data_in輸入,,由data_begin控制數(shù)據(jù)的開(kāi)始,;由data_out輸出,同時(shí)data_out_valid必須等于1,,error必須等于0,,否則0的相位有錯(cuò)。整個(gè)模塊如圖7,。
3 仿真結(jié)果
本文設(shè)計(jì)的密勒調(diào)制副載波序列解碼器采用數(shù)字邏輯設(shè)計(jì),,用Verilog HDL對(duì)該方法進(jìn)行編程實(shí)現(xiàn)。為了驗(yàn)證設(shè)計(jì)的正確性,,本文使用Altera的Quartus II(V6.1)對(duì)設(shè)計(jì)進(jìn)行電路綜合,。 由于前同步碼格式,副載波數(shù)取值的難易關(guān)系到仿真圖的坐標(biāo)長(zhǎng)短,,本文為便于解釋,,M取2,即M_value=0,TRext=0,。
3.1 幀頭檢測(cè)測(cè)試
當(dāng)檢測(cè)到幀頭時(shí),,輸出data_begin_valid=1。如果輸入data_in只是一個(gè)前同步碼,,則data_begin_valid輸出,,如圖8。
3.2 數(shù)據(jù)輸出仿真結(jié)果
數(shù)據(jù)‘10110001’從同步碼后輸入,,即從215 ns后輸入,。解碼后,從端口data_out輸出,,如圖9,。同時(shí)data_out_valid必須為高電平,error必須為低電平,。每來(lái)一個(gè)時(shí)鐘上升沿,,從端口讀取解碼后的數(shù)據(jù)。
3.3 相位出錯(cuò)仿真
數(shù)據(jù)從395 ns之后就輸入一串如同時(shí)鐘一樣的電平,。根據(jù)編碼特性,,符號(hào)0之間必須相位翻轉(zhuǎn),否者就違反編碼規(guī)則,。數(shù)據(jù)符號(hào)0之間沒(méi)有相位翻轉(zhuǎn),,結(jié)果仿真就輸出error置高電平了,,如圖10。
3.4 幀尾檢測(cè)仿真
幀尾檢測(cè),,用到一個(gè)5位的寄存器register_data,。其功能是存儲(chǔ)解碼輸出數(shù)據(jù),一旦出現(xiàn)error=1,,便判斷其存儲(chǔ)值是否為‘10000’,。結(jié)果為1就是結(jié)束標(biāo)志。從395 ns后,,輸入1,,之后的數(shù)據(jù)如同時(shí)鐘數(shù)據(jù)。符號(hào)0相位未翻轉(zhuǎn),,之后再存儲(chǔ)幾個(gè)解碼數(shù)據(jù),,判斷是相位翻轉(zhuǎn)錯(cuò)誤還是幀結(jié)尾標(biāo)志。如圖11,,出現(xiàn)了幀結(jié)尾標(biāo)志,。
本文分析了應(yīng)用于超高頻RFID數(shù)據(jù)通信的密勒調(diào)制副載波技術(shù)的特點(diǎn),并基于該特點(diǎn)設(shè)計(jì)了一種密勒調(diào)制副載波序列解碼器,。該設(shè)計(jì)采用硬件描述語(yǔ)言編程實(shí)現(xiàn),并進(jìn)行FPGA硬件驗(yàn)證,。硬件測(cè)試結(jié)果驗(yàn)證了該方法能夠正確地對(duì)副載波密勒編碼數(shù)據(jù)進(jìn)行解碼,。
參考文獻(xiàn)
[1] 羅杰.Verilog HDL與數(shù)字ASIC設(shè)計(jì)基礎(chǔ)[M].武漢:華中科技大學(xué)出版社,2008,,3.
[2] 王鈿,,卓興旺.基于Verilog HDL的數(shù)字系統(tǒng)應(yīng)用設(shè)計(jì)[M]. 北京:國(guó)防工業(yè)出版社,2007,,8.
[3] ISO/IEC 18000-6C:Information technology-Radio frequency identification for item management-Part 6:Parameters for air interface communications at 860 MHz to 960 MHz,,final draft[S].
[4] 樊昌信,張甫祤,,徐炳祥,,等.通信原理(第五版)[M].北京:國(guó)防工業(yè)出版社,2001:280-318.
[5] Takao Rokutan,,Hachioqi.Modified Miller Data Demodulator[P]. US:4,612,508,,1986.