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