UHF RFID讀寫器編解碼模塊的FPGA實(shí)現(xiàn)
解碼模塊接收部分通過(guò)采樣信號(hào)接收待解碼數(shù)據(jù),這樣便只需檢測(cè)采樣信號(hào),節(jié)省了計(jì)數(shù)器的消耗。采樣到的數(shù)據(jù)首先進(jìn)行幀頭檢測(cè),判斷使用的幀頭類型及編碼形式,若幀頭檢測(cè)正確,則實(shí)施去幀頭處理,將有效數(shù)據(jù)通過(guò)控制狀態(tài)機(jī)流程來(lái)進(jìn)行解碼。而其他控制信號(hào),即來(lái)自解碼預(yù)處理模塊的數(shù)據(jù)開始傳輸指示data_start,數(shù)據(jù)傳輸結(jié)束指示data_end,數(shù)據(jù)傳輸錯(cuò)誤指示data_error則直接控制狀態(tài)機(jī)狀態(tài)的轉(zhuǎn)換。
解碼完成之后,根據(jù)前面發(fā)送命令的類型,對(duì)解碼后的數(shù)據(jù)進(jìn)行CRC5/16校驗(yàn),若校驗(yàn)正確,則去掉校驗(yàn)位,將有效數(shù)據(jù)輸出;若錯(cuò)誤,則返回給狀態(tài)機(jī),發(fā)出解碼錯(cuò)誤指示。同時(shí),根據(jù)狀態(tài)機(jī)所處的特定狀態(tài),在每一個(gè)解碼數(shù)據(jù)期間會(huì)輸出持續(xù)一個(gè)周期的數(shù)據(jù)采樣信號(hào)sclk,以及在數(shù)據(jù)開始解碼時(shí)便與解碼數(shù)據(jù)同步輸出的信號(hào)data_out_flag,以便后續(xù)模塊進(jìn)行數(shù)據(jù)的采樣與控制。
5 軟件仿真與硬件測(cè)試
以上各模塊均使用硬件描述語(yǔ)言實(shí)現(xiàn)。在Quartus II9.0中全部編譯通過(guò),滿足時(shí)序要求,編譯報(bào)告顯示本設(shè)計(jì)共消耗了679個(gè)LE資源。調(diào)用Modelsim軟件仿真驗(yàn)證。使用了Quartus II軟件的Signaltap邏輯分析儀,捕捉了讀寫器實(shí)際工作時(shí)FPGA的編解碼數(shù)據(jù)。
圖8是讀寫器先后發(fā)送不同命令并與標(biāo)簽交互的部分流程。圖9是讀寫器發(fā)送的Query命令的PIE編碼,所發(fā)送的命令數(shù)據(jù)是1000_00110000 0000010101,其中前4位1000為Query命令的命令碼,后面18位則為命令數(shù)據(jù)。本文引用地址:http://butianyuan.cn/article/153736.htm
圖10是讀寫器接收到標(biāo)簽返回的miller2編碼信息后的操作。為了便于觀察,將解碼后的數(shù)據(jù)也作為一路信號(hào)顯示,即decode_data。最后一路信號(hào)是串口要發(fā)送的數(shù)據(jù)。圖10中的enc_cmd_data_out信號(hào)是讀寫器接收到標(biāo)簽返回來(lái)的信息后,發(fā)出的ACK命令,發(fā)送的命令數(shù)據(jù)為01_0001111010100111,其中前兩位01為ACK命令的命令碼,后面的16位數(shù)據(jù)按照協(xié)議要求為標(biāo)簽返回的RN16。
圖11是在讀寫器工作時(shí)利用Signaltap邏輯分析儀捕獲到的解碼后的標(biāo)簽數(shù)據(jù)及采樣信號(hào)。
結(jié)語(yǔ)
本文介紹了在EPCC1G2協(xié)議下,利用FPGA快速處理大量數(shù)據(jù)流的優(yōu)勢(shì),實(shí)現(xiàn)UHF RFID讀寫器中編解碼模塊的設(shè)計(jì)方案,解決了讀寫器讀取標(biāo)簽速率難以提升的問(wèn)題。經(jīng)過(guò)軟件仿真與實(shí)際硬件測(cè)試,讀寫器工作良好,速度、性能均得到顯著提升。
評(píng)論