基于FPGA的RFID系統(tǒng)解碼模塊設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
RFID技術(shù)(radio frequency identification)是一種非接觸式智能識(shí)別技術(shù),它通過(guò)射頻信號(hào)自動(dòng)識(shí)別目標(biāo)對(duì)象并獲得相關(guān)信息。
整個(gè)識(shí)別過(guò)程無(wú)需人工介入,可同時(shí)識(shí)別多個(gè)對(duì)象并可以識(shí)別高速運(yùn)動(dòng)的物體,操作簡(jiǎn)單,廣泛應(yīng)用在車(chē)輛自動(dòng)識(shí)別系統(tǒng)、物流管理與監(jiān)控、倉(cāng)庫(kù)管理、門(mén)禁系統(tǒng)以及軍事等領(lǐng)域。
RFID系統(tǒng)由三部分組成:讀頭、天線(xiàn)和電子標(biāo)簽,如圖1所示。
其中讀頭是整個(gè)系統(tǒng)的核心部分,控制整個(gè)識(shí)別過(guò)程中與標(biāo)簽之間的通信,并提供與后臺(tái)計(jì)算機(jī)的接口。天線(xiàn)用來(lái)發(fā)送射頻信號(hào)給電子標(biāo)簽,并把電子標(biāo)簽響應(yīng)的數(shù)據(jù)接收回來(lái)。電子標(biāo)簽存儲(chǔ)著目標(biāo)的信息,它進(jìn)入識(shí)別區(qū)域時(shí)被天線(xiàn)發(fā)送的射頻信號(hào)激活,然后向讀頭返回應(yīng)答,從而完成一次識(shí)別。
本文要介紹的解碼模塊是基于ISO/IEC15693標(biāo)準(zhǔn)設(shè)計(jì)的,實(shí)現(xiàn)了從帶干擾的返回信號(hào)(此信號(hào)已經(jīng)去掉載波)中精確的提取標(biāo)簽信息的功能。此設(shè)計(jì)直接影響識(shí)別的準(zhǔn)確性。
1 ISO/IEC15693協(xié)議
ISO/IEC15693協(xié)議是國(guó)際化標(biāo)準(zhǔn)組織制定的關(guān)于射頻識(shí)別技術(shù)的一項(xiàng)標(biāo)準(zhǔn),工作頻率為13.56MHz,電子標(biāo)簽屬于無(wú)源標(biāo)簽。協(xié)議詳細(xì)描述了射頻識(shí)別技術(shù)的信號(hào)調(diào)制方式、讀頭向標(biāo)簽發(fā)送數(shù)據(jù)的編碼方式、標(biāo)簽返回?cái)?shù)據(jù)的編碼方式以及各種指令包格式和應(yīng)答包格式。協(xié)議還介紹了電子標(biāo)簽的防沖撞機(jī)制。本文中的標(biāo)簽返回?cái)?shù)據(jù)的解碼模塊就是以此協(xié)議為基準(zhǔn)設(shè)計(jì)的,下面詳細(xì)介紹標(biāo)簽向讀頭返回?cái)?shù)據(jù)的格式。
電子標(biāo)簽首先將原始數(shù)據(jù)(digital bits,即要返回的標(biāo)簽信息)進(jìn)行曼徹斯特編碼(manchester bits),然后再用編碼后的數(shù)據(jù)信息以FSK方式調(diào)制到低速率的子載波423.75kHz和484.28kHz信號(hào)上(RF Bits FSK),即曼徹斯特碼的高電平部分使用484.28kHz方波信號(hào)表示,低電平部分使用423.75kHz方波信號(hào)表示。最后再由子載波調(diào)制到 13.56MHz的載波上,以此方式回傳給讀頭。返回信號(hào)編碼及子載波形式如圖2所示。
為了達(dá)到數(shù)據(jù)的傳輸同步,電子標(biāo)簽在曼徹斯特碼的起始和結(jié)尾分別加入幀頭和幀尾,幀頭部分為11100010,用423.75kHz和484.28kHz信號(hào)調(diào)制后如圖3所示。幀尾部分為01000111,與幀頭的順序完全相反,調(diào)制后如圖4所示。
2 解碼模塊的結(jié)構(gòu)及其實(shí)現(xiàn)原理
整個(gè)讀頭的結(jié)構(gòu)由模擬電路部分和數(shù)字電路部分組成。模擬電路的作用是產(chǎn)生13.56MHz的載波信號(hào)、調(diào)制發(fā)送信號(hào)和解調(diào)返回信號(hào)。數(shù)字電路部分負(fù)責(zé)數(shù)字信號(hào)的編解碼。FPGA是數(shù)字電路部分的核心,理想情況下返回信號(hào)經(jīng)過(guò)模擬電路解調(diào)到達(dá)FPGA后,其數(shù)據(jù)格式如圖2中RF Bits FSK所示。但在射頻信號(hào)傳輸過(guò)程中和模擬電路的解測(cè)過(guò)程中都難免有噪聲干擾,進(jìn)入FPGA的信號(hào)實(shí)際上是帶干擾FSK信號(hào)。因此必須在解碼模塊中對(duì)干擾加以消除,否則會(huì)大大降低電子標(biāo)簽的識(shí)別成功率。解碼模塊共分為八個(gè)部分,如圖5所示,下面將對(duì)這些模塊的功能進(jìn)行具體介紹。
2.1 FSK信號(hào)的還原到曼徹斯特碼
按照?qǐng)D2所示數(shù)據(jù)格式的逆順序進(jìn)行解碼,首先將RF Bits FSK信號(hào)還原為Manchester Bits信弓。此部分由圖5中的倍頻器、周期測(cè)量模塊和比較器三個(gè)模塊實(shí)現(xiàn)。在本設(shè)計(jì)中計(jì)數(shù)器在高頻時(shí)鐘信號(hào)(本設(shè)計(jì)采用100MHz時(shí)鐘信號(hào))的驅(qū)動(dòng)下,測(cè)量FSK信號(hào)中相鄰的兩個(gè)信號(hào)上升沿之間的計(jì)數(shù)值,依此來(lái)區(qū)分423.75kHz和484.28kHz兩個(gè)頻率的信號(hào)。
首先為了提高計(jì)數(shù)的精度,將50M的系統(tǒng)時(shí)鐘經(jīng)過(guò)FPGA中的DCM模塊倍頻成100MHz,然后由此時(shí)鐘來(lái)驅(qū)動(dòng)周期測(cè)量模塊,來(lái)計(jì)算RF Bits FSK兩個(gè)相鄰上升沿之間(即RF Bits FSK的一個(gè)周期)的計(jì)數(shù)值,再通過(guò)比較器與門(mén)限比較來(lái)確定是423.75kHz或484.28kHz的信號(hào)。若是423.75kHz信號(hào),則100M時(shí)鐘在其一個(gè)周期內(nèi)計(jì)數(shù)值為236,若是484.28kHz信號(hào),計(jì)數(shù)值為206,所以選擇折中門(mén)限為221。計(jì)數(shù)值大于此門(mén)限則認(rèn)為此RF Bits FSK周期是423.75kHz信號(hào),用低電平表示,小于此門(mén)限則為484.28kHz信號(hào),用高電平表示。理想情況下解調(diào)后的信號(hào)就是曼徹斯特碼,如圖 6所示。
但是一般情況下,此時(shí)的信號(hào)都是帶有干擾的,用真實(shí)數(shù)據(jù)仿真結(jié)果如圖7中的Disturbed_code所示,在信號(hào)中會(huì)有很有窄的脈沖出現(xiàn)。
2.2 去干擾處理
由于Disturbed_code是帶干擾的曼徹斯特碼,所以在進(jìn)行曼徹斯特解碼之前必須對(duì)數(shù)據(jù)進(jìn)行消除干擾的處理,否則會(huì)導(dǎo)致曼徹斯特解碼的錯(cuò)誤。去干擾的原理是在取得幀同步以后使用430kHz(由50MHz時(shí)鐘分頻得到)時(shí)鐘對(duì)Disturted_code信號(hào)進(jìn)行采樣,每個(gè)曼徹斯特碼周期采樣8 次,每采樣8次判斷一次采樣值中1的個(gè)數(shù),若1的個(gè)數(shù)大于等于5則認(rèn)為此曼徹斯特碼周期內(nèi)的數(shù)據(jù)為1,否則為0。這里是考慮在一個(gè)曼徹斯特碼周期(曼徹斯特碼頻率為53.4kHz)內(nèi)脈沖干擾只是很窄的一部分,所以我們將一個(gè)曼徹斯特碼周期分為8個(gè)時(shí)間段,每個(gè)時(shí)間段采樣一次來(lái)判斷是1還是0,若8個(gè)時(shí)間段內(nèi)1的個(gè)數(shù)多則此周期的曼徹斯特碼為1,同理0的個(gè)數(shù)多則判為0。用430kHz是因?yàn)橐粋€(gè)曼徹斯特碼周期正好為8個(gè)430kHz脈沖周期。當(dāng)然,此判斷方法會(huì)使信號(hào)有一定的延遲,但時(shí)間很短,不影響識(shí)別速度。去干擾之后便得到純凈的曼徹斯特碼,結(jié)果如圖7所示。
2.3 幀頭檢測(cè)
本設(shè)計(jì)中使用的去除干擾的方法是建立在準(zhǔn)確識(shí)別數(shù)據(jù)幀頭的基礎(chǔ)之上的,所以在進(jìn)行去干擾處理之前必須進(jìn)行幀頭檢測(cè),精確的幀頭檢測(cè)對(duì)識(shí)別的正確性影響很大。SOF檢測(cè)模塊實(shí)現(xiàn)了幀頭檢測(cè)的功能??紤]到幀頭部分也會(huì)有干擾,本設(shè)計(jì)采用下面的相關(guān)算法來(lái)識(shí)別幀頭。具體實(shí)現(xiàn)算法如下:
其中X[71:0]為一個(gè)72位的移位寄存器,以480kHz(此頻率時(shí)鐘正好將一個(gè)曼徹斯特碼周劃分為9個(gè)時(shí)間段)的頻率將 Disturbed_code移入其中,⊙為按位同或,ffffffe0000003fe00H是理想情況下幀頭(11100010)經(jīng)過(guò)480kHz采樣速率采樣所得到的值。當(dāng)Z為最大值時(shí),說(shuō)明此時(shí)接收的幀頭與期望值匹配達(dá)到最佳,這就準(zhǔn)確的找到了幀頭的位置。仿真結(jié)果如圖8所示。
2.4 曼徹斯特解碼
經(jīng)過(guò)前面的處理,我們已經(jīng)得到理想的曼徹斯特碼,下面介紹曼徹斯特解碼模塊的解碼過(guò)程。前面已經(jīng)取得了幀同步,現(xiàn)在從第一個(gè) Manchester_code數(shù)據(jù)位的中間位置開(kāi)始,以53.4kHz(此頻率為1個(gè)曼徹斯特碼周期)的頻率將Manchester code移入串行移位寄存器N[1:0]中,采用下述方法實(shí)現(xiàn)解碼。
每2個(gè)53.4kHz信號(hào)周期判斷一飲K的數(shù)值,當(dāng)K=2時(shí)輸出解碼數(shù)據(jù)為1(曼徹斯特碼10表示原碼1),k=0時(shí)輸出解碼數(shù)據(jù)為0(即曼徹斯特碼為 01,表示原碼0),每16個(gè)53.4kHz信號(hào)周期便可以得到一個(gè)字節(jié)的標(biāo)簽數(shù)據(jù)。這樣直到幀尾出現(xiàn)便完成了曼徹斯特的解碼工作。
曼徹斯特解碼后的數(shù)據(jù)同時(shí)送往圖5中CRC校驗(yàn)?zāi)K進(jìn)行校驗(yàn)和標(biāo)簽信息數(shù)據(jù)棧進(jìn)行存儲(chǔ)。若CRC校驗(yàn)正確,則會(huì)給出一個(gè)Data_ok的信號(hào)通知其它部分來(lái)讀取此標(biāo)簽信息數(shù)據(jù)棧中的數(shù)據(jù)。到此為止便完成了整個(gè)上行信號(hào)的解碼工作。其真實(shí)數(shù)據(jù)的仿真結(jié)果如圖9所示。
此設(shè)計(jì)經(jīng)過(guò)FPGA的驗(yàn)證,并結(jié)合本課題組成員的模擬電路部分實(shí)現(xiàn)了RFID系統(tǒng)的正常工作,標(biāo)簽檢測(cè)準(zhǔn)確,讀取速度快,每秒可以讀50張標(biāo)簽,雙天線(xiàn)作用距離可達(dá)1.5m。
RFID系統(tǒng)采用非接觸式射頻識(shí)別技術(shù),識(shí)別速度快、安全性高,應(yīng)用于超市、礦下工人身份識(shí)別等領(lǐng)域可大大提高效率和安全性,所以RFID有著廣泛的應(yīng)用前景