當(dāng)前位置:首頁 > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]摘要:本文首先對EPC C1G2協(xié)議中的相關(guān)內(nèi)容作了簡要介紹,對編解碼系統(tǒng)的架構(gòu)以及各個(gè)組成模塊的FPGA實(shí)現(xiàn)作了重點(diǎn)說明,最后給出了Modelsim軟件仿真結(jié)果,以及在讀寫器工作時(shí)使用Signaltap邏輯分析儀抓取的數(shù)據(jù)。 關(guān)

摘要:本文首先對EPC C1G2協(xié)議中的相關(guān)內(nèi)容作了簡要介紹,對編解碼系統(tǒng)的架構(gòu)以及各個(gè)組成模塊的FPGA實(shí)現(xiàn)作了重點(diǎn)說明,最后給出了Modelsim軟件仿真結(jié)果,以及在讀寫器工作時(shí)使用Signaltap邏輯分析儀抓取的數(shù)據(jù)。
關(guān)鍵詞:FPGA;UHF RFID;EPC C1G2協(xié)議;編解碼;FM0;miller碼

引言
    UHF RFID讀寫器具有讀寫距離遠(yuǎn)、讀寫速度快等優(yōu)點(diǎn),已成功運(yùn)用于供應(yīng)鏈管理、航空管理和后勤管理等諸多領(lǐng)域。本設(shè)計(jì)依據(jù)的協(xié)議是EPC C1G2(EPCClassl Generation2)。
    本文介紹了一種讀寫器的編解碼部分由FPGA來完成的設(shè)計(jì)方案,由FPGA負(fù)責(zé)前向鏈路的PIE編碼和后向鏈路的FM0/miller解碼,且解碼模塊可對標(biāo)簽突發(fā)傳來的數(shù)據(jù)立即檢測并實(shí)施解碼,實(shí)現(xiàn)了較快的解碼速率。FPGA選用的是Altera公司的EP1C3T100C6芯片。

1 RFID系統(tǒng)介紹
   
圖1所示為RFID系統(tǒng),主要由PC機(jī)、讀寫器、天線和電子標(biāo)簽組成。讀寫器與電子標(biāo)簽之間的數(shù)據(jù)通過天線進(jìn)行傳遞。讀寫器作為RFID系統(tǒng)的一部分,既能與標(biāo)簽通信,又能向PC機(jī)傳輸數(shù)據(jù)并執(zhí)行上位機(jī)所要求的操作,具有發(fā)送、接收和處理數(shù)據(jù)的能力。讀寫器系統(tǒng)按其所處理信號的不同,主要由2個(gè)部分組成,即處理數(shù)字信號的基帶部分和處理模擬信號的射頻部分。



2 EPC C1G2協(xié)議的相關(guān)介紹
    EPC C1G2標(biāo)準(zhǔn)具有如下特點(diǎn):速度快,速率可達(dá)40~640 kbps;可以同時(shí)讀取標(biāo)簽的數(shù)量多,理論上能讀到1000多個(gè)標(biāo)簽;可在密集的讀寫器環(huán)境下工作,能迅速使用變化無常的標(biāo)簽群;存儲區(qū)域多,可延伸使用用戶的內(nèi)存需求;功能強(qiáng),具有多種寫保護(hù)方式,安全性強(qiáng);通用性強(qiáng),符合EPC規(guī)則;產(chǎn)品價(jià)格低,兼容性好。
2.1 PIE編碼介紹
    EPC C1G2協(xié)議規(guī)定發(fā)送鏈路(即讀寫器向標(biāo)簽發(fā)送數(shù)據(jù))采用的編碼方式是脈沖間隔編碼(即PIE編碼)。讀寫器每次給標(biāo)簽發(fā)送命令,都以幀同步碼或前同步碼開始所有的通信。幀同步碼格式如圖2所示,幀同步碼由delimiter、數(shù)據(jù)0和RTcal三部分組成。前同步碼格式如圖3所示,前同步碼由delimiter、數(shù)據(jù)0、RTcal和TRcal四部分組成,除delimiter外,各部分均以低脈沖PW結(jié)尾,且各部分PW的長度必須相同。de limiter的長度固定為12.5μs,協(xié)議規(guī)定允許有±5%的誤差。delimiter用于給電子標(biāo)簽校準(zhǔn)時(shí)鐘。


    前同步碼只用于表明盤存周期開始的Query命令中,其他命令則以幀同步碼開始。當(dāng)Query命令數(shù)據(jù)中的DR=1、前同步碼中的TRcal長度為33.3μs時(shí),可設(shè)定反向鏈路(即標(biāo)簽向讀寫器發(fā)送數(shù)據(jù))頻率最高為640kHz。
2.2 FM0和miller碼介紹
   
Query命令中M參數(shù)值決定了標(biāo)簽返回?cái)?shù)據(jù)的編碼方式,即FM0、miller2、miller4、miller8四種。FM0碼在每個(gè)數(shù)據(jù)邊界處和數(shù)據(jù)0中間反相。miller碼則是在兩個(gè)連續(xù)的數(shù)據(jù)0的邊界處和數(shù)據(jù)1的中間反相。miller編碼序列每位可包含2、4、8個(gè)副載波周期,即miller2、mille r4、miller8三種編碼形式。這四種編碼方式都以各自特定的幀頭開始,而具體選擇哪種幀頭,則由Query命令中Trext參數(shù)值決定,并且在結(jié)尾處都有一位“dummyl”作為數(shù)據(jù)傳送的結(jié)束標(biāo)志。
2.3 讀寫器與標(biāo)簽通信流程
    EPC C1G2協(xié)議規(guī)定讀寫器的命令分為選擇、盤存、訪問3類,而標(biāo)簽的工作狀態(tài)分為就緒、仲裁、應(yīng)答、確認(rèn)、開放、保護(hù)、殺死7個(gè)狀態(tài),讀寫器命令類型和標(biāo)簽狀態(tài)如圖4所示。讀寫器依賴3類命令通過改變標(biāo)簽所處的狀態(tài),實(shí)現(xiàn)對標(biāo)簽群的篩選,以及對單個(gè)標(biāo)簽的識別和訪問過程。讀寫器與標(biāo)簽的通信過程略一編者注。



3 總體設(shè)計(jì)
   
在本讀寫器設(shè)計(jì)中,ARM與FPGA協(xié)同工作。ARM芯片是LPC2148,工作時(shí)鐘是20 MHz,主要完成對讀寫器系統(tǒng)的控制。而FPGA則負(fù)責(zé)編解碼部分的數(shù)據(jù)流處理,工作時(shí)鐘頻率是25 MHz。圖5是FPGA部分的整體設(shè)計(jì)框圖。


    FPGA中的模塊主要包括協(xié)議控制及命令產(chǎn)生模塊、PIE編碼模塊、FM0/miller解碼模塊,以及用于與PC機(jī)交互的串口控制模塊。
    工作過程如下:對讀寫器命令數(shù)據(jù)及其相應(yīng)的CRC5/16校驗(yàn)位進(jìn)行PIE編碼,編碼完成送到射頻發(fā)射端,數(shù)字信號通過控制射頻芯片RF2 173的開關(guān)引腳實(shí)現(xiàn)調(diào)制深度為100%的OOK(On-Off Keying)調(diào)制,并經(jīng)由收發(fā)分離的定向耦合器,通過天線發(fā)射出去。
    場內(nèi)標(biāo)簽接收到讀寫器發(fā)送的信息后,在允許其通信的情況下,會根據(jù)讀寫器發(fā)送來的命令參數(shù),選擇4種編碼方式中的一種,將要回復(fù)讀寫器的數(shù)據(jù)進(jìn)行編碼,經(jīng)調(diào)制之后在空間傳輸。
    讀寫器天線接收到標(biāo)簽信息后,經(jīng)由定向耦合器將標(biāo)簽信息送到讀寫器的射頻接收模塊,該模塊對標(biāo)簽信息進(jìn)行解調(diào),并將解調(diào)后得到的數(shù)字信號送給FPGA的FM0/miller解碼模塊。解碼模塊根據(jù)數(shù)據(jù)的編碼方式選擇相應(yīng)的電路解碼,解碼后的數(shù)據(jù)返回給協(xié)議控制及命令產(chǎn)生模塊。該模塊根據(jù)上次發(fā)送的命令以及接收到的標(biāo)簽信息作出判斷,產(chǎn)生下一次的操作命令數(shù)據(jù),發(fā)給PIE編碼模塊,與該標(biāo)簽進(jìn)行進(jìn)一步的信息交互或選擇重新讀取另外的標(biāo)簽。
    同時(shí),為了準(zhǔn)確獲取標(biāo)簽信息,必須將讀寫器與PC機(jī)相連。讀寫器通過由FPGA實(shí)現(xiàn)的串口模塊與PC機(jī)相連,對讀取到的標(biāo)簽信息做必要的顯示,如標(biāo)簽返回的RN16、EPC、UII等。

4 FPGA實(shí)現(xiàn)電路
   
為了實(shí)現(xiàn)FPGA部分的功能,在Altera公司的EP1C3T100C6芯片上,利用Quartus II軟件進(jìn)行設(shè)計(jì),PIE編碼模塊設(shè)計(jì)如圖6所示。


4.1 編碼模塊設(shè)計(jì)
   
PIE編碼由pie_encode模塊實(shí)現(xiàn)。該模塊接收命令產(chǎn)生模塊并行發(fā)來的8位數(shù)據(jù),按照協(xié)議規(guī)定及設(shè)置,先給命令數(shù)據(jù)添加特定的幀頭,并根據(jù)數(shù)據(jù)傳輸速率,對命令數(shù)據(jù)及其CRC5/16校驗(yàn)位進(jìn)行PIE編碼,編碼完成后輸出給射頻發(fā)射模塊調(diào)制,然后通過天線發(fā)送出去。其設(shè)計(jì)框圖如圖6所示。
    PIE編碼模塊由編碼狀態(tài)機(jī)作為控制模塊。狀態(tài)機(jī)的狀態(tài)由命令幀頭和數(shù)據(jù)0和1組成,即idle、delimiter、tari、rtcal、trcal、data_ sendl、data_send0 7個(gè)狀態(tài),其中idle是空閑狀態(tài),接收到開始信號后跳轉(zhuǎn)到其他狀態(tài)。狀態(tài)機(jī)的流程按照命令的組成依次進(jìn)行,每個(gè)狀態(tài)按照協(xié)議要求保持特定的時(shí)間,直至命令編碼完成。由于Query命令和其他命令的幀頭不同,query_cmd_flag_in信號用于指示此次發(fā)送來的數(shù)據(jù)是否為Query命令數(shù)據(jù),如果是,則在編碼時(shí)加入TRcal命令段;否則,跳過TRcal狀態(tài)。
    在接收部分?jǐn)?shù)據(jù)開始發(fā)送指示信號rx_cmd_start與要發(fā)送的數(shù)據(jù)rx_cmd、rx_cmd_num保持同步,編碼模塊中的命令數(shù)據(jù)計(jì)數(shù)器和命令數(shù)據(jù)移位寄存器根據(jù)rx_cmd_start信號將8位數(shù)據(jù)并行送入各自的寄存器。
    接收完成后,數(shù)據(jù)寄存器會根據(jù)計(jì)數(shù)器中的值進(jìn)行相應(yīng)的移位,將無效數(shù)據(jù)移出,保證有效數(shù)據(jù)是從命令寄存器中的最高位開始。同時(shí),每完成一位數(shù)據(jù)的編碼,計(jì)數(shù)器自減1,移位寄存器也自動左移一位,將下一個(gè)要編碼的數(shù)據(jù)放入待編碼數(shù)據(jù)寄存器中,該寄存器由此去控制狀態(tài)機(jī)的下一個(gè)流程。
    發(fā)送部分主要由一個(gè)命令長度計(jì)數(shù)器組成,該計(jì)數(shù)器根據(jù)命令參數(shù)的設(shè)置以及所處的狀態(tài)進(jìn)行計(jì)數(shù),控制狀態(tài)機(jī)在某個(gè)狀態(tài)保持的時(shí)間當(dāng)一位數(shù)據(jù)編碼完成,計(jì)數(shù)器清0,并開始對下一位數(shù)據(jù)計(jì)數(shù),同時(shí)狀態(tài)機(jī)也跳轉(zhuǎn)到下一個(gè)狀態(tài),而編碼數(shù)據(jù)則根據(jù)狀態(tài)機(jī)的狀態(tài)以及計(jì)數(shù)器的值拉高或拉低,并由鎖存器將編碼后的命令鎖存輸出。這樣就實(shí)現(xiàn)了邊編碼邊調(diào)制的目的,提升了命令發(fā)送的速率,也節(jié)省了硬件資源。
4.2 解碼模塊設(shè)計(jì)
   
解碼部分由data_pre_process、fm_and_miller_decode、data_post_decode 3個(gè)模塊組成。data_pre_process是解碼數(shù)據(jù)預(yù)處理模塊,接收射頻模塊解調(diào)后的數(shù)據(jù)。因?yàn)樯漕l發(fā)射和接收使用的是同一根天線,發(fā)射的數(shù)據(jù)信息以及其他雜波信號經(jīng)常會泄露進(jìn)解碼模塊。該模塊主要是去除信號中的毛刺,并對接收數(shù)據(jù)的高低電平長度進(jìn)行判斷,看是否符合編碼規(guī)則,如果均在合適的范圍內(nèi),則視為成功。同時(shí)產(chǎn)生待解碼數(shù)據(jù)的采樣信號,以及其他指示信號,以便解碼模塊的數(shù)據(jù)處理;若不符合要求則丟棄這部分?jǐn)?shù)據(jù),重新檢查分析新來的數(shù)據(jù)信息。
    data_post_process是解碼數(shù)據(jù)確認(rèn)及串并轉(zhuǎn)換模塊。解調(diào)后的數(shù)據(jù)經(jīng)過了解碼預(yù)處理模塊的初步判斷,只是符合了一定的編碼規(guī)則,在解碼過程中還可能會出現(xiàn)諸如幀頭出錯(cuò)、結(jié)尾數(shù)據(jù)不為1等其他錯(cuò)誤。該模塊通過判斷解碼模塊的error和data_success信號,確認(rèn)此次解碼是否成功,若成功,將接收解碼數(shù)據(jù),同時(shí)考慮到串行數(shù)據(jù)傳輸速度較慢,本模塊會對解碼數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換,然后8位并行地將解碼后的數(shù)據(jù)傳輸給其他模塊。
    fm_and_miller_decode是解碼模塊。其組成框圖如圖7所示。


    該解碼模塊主要由解碼狀態(tài)機(jī)控制。狀態(tài)機(jī)的狀態(tài)由初始態(tài)、數(shù)據(jù)解碼態(tài),以及最后的解碼成功和解碼失敗狀態(tài)組成。接收到解碼開始信號時(shí),狀態(tài)機(jī)由初始態(tài)跳轉(zhuǎn)到數(shù)據(jù)解碼態(tài)開始解碼,在解碼過程中,如果發(fā)現(xiàn)輸入的數(shù)據(jù)違背了編碼規(guī)則或不符合命令的設(shè)置,則直接跳入失敗狀態(tài)。在該狀態(tài)下,會有一個(gè)解碼失敗信號error產(chǎn)生并輸出。如果解碼順利進(jìn)行到結(jié)束,則跳轉(zhuǎn)到解碼成功狀態(tài),會有一個(gè)解碼成功信號data_success產(chǎn)生并輸出,控制下一個(gè)模塊的工作。這樣解碼狀態(tài)機(jī)一邊接收待解碼數(shù)據(jù),進(jìn)行解碼處理,一邊將前面處理完的數(shù)據(jù)輸出給CRC5/16校驗(yàn)?zāi)K,實(shí)現(xiàn)了類似于流水線的工作,節(jié)省了解碼時(shí)間。
    解碼模塊接收部分通過采樣信號接收待解碼數(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ù)。


    圖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í)際硬件測試,讀寫器工作良好,速度、性能均得到顯著提升。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉