基于FPGA的RFID讀寫(xiě)器設(shè)計(jì)
射頻接口MF RC500芯片上帶有A0、A1、A2三根地址線,用于對(duì)內(nèi)部寄存器的尋址,同時(shí)DO~D7八根數(shù)據(jù)線支持地址線、數(shù)據(jù)線復(fù)用。在本設(shè)計(jì)中不采用數(shù)據(jù)線、地址線復(fù)用的接法,采用獨(dú)立的數(shù)據(jù)線、地址線的接法。芯片內(nèi)有64個(gè)寄存器,由處理器向芯片相應(yīng)的寄存器位配置數(shù)據(jù);由處理器讀取寄存器的相應(yīng)狀態(tài)標(biāo)志來(lái)監(jiān)控芯片當(dāng)前所處的狀態(tài),從而決定下一步的操作。由于片內(nèi)的64個(gè)寄存器尋址需要6根地址線,當(dāng)采用獨(dú)立的地址線時(shí),由于地址線只有3根,支持不了64個(gè)寄存器的尋址,為此芯片采用了分頁(yè)機(jī)制。64個(gè)寄存器被分成8頁(yè),每頁(yè)8個(gè),3根地址線恰好可以實(shí)現(xiàn)對(duì)每一頁(yè)內(nèi)的8個(gè)寄存器尋址,而對(duì)于寄存器頁(yè)的選擇,需要配置Page寄存器的0、l、2位。Page寄存器的第7位用來(lái)選擇是否采用獨(dú)立的地址線,芯片復(fù)位后,Page寄存器的默認(rèn)值為80H,即默認(rèn)采用獨(dú)立的地址線尋址方式,Page寄存器的0、l、2位僅
當(dāng)?shù)?位為1時(shí)才有效。芯片上的雙向數(shù)據(jù)線DO~D7同處理器的I/O口直接相連,用來(lái)實(shí)現(xiàn)芯片間數(shù)據(jù)的雙向并行傳輸。
1.2 天線
天線在整個(gè)系統(tǒng)中起著重要的作用,在非接觸式卡與讀寫(xiě)器之間的能量與數(shù)據(jù)傳遞要通過(guò)天線線圈產(chǎn)生的磁通量實(shí)現(xiàn)??梢赃x擇2種不同的天線連接到讀卡器上:50 Ω匹配的天線或者直接匹配的天線。本方案中采用的是YW-300天線,工作距離可以達(dá)到10cm。
1.3 數(shù)字模塊
數(shù)字模塊由處理器、存儲(chǔ)器組成。處理器的功能有:實(shí)現(xiàn)與PC機(jī)通信,接收PC機(jī)命令并完成解析;將送來(lái)的EPC卡號(hào)加算CRC校驗(yàn)上傳PC機(jī);解決多卡碰撞,實(shí)現(xiàn)多卡讀取;實(shí)現(xiàn)對(duì)射頻模塊的鎖相環(huán)頻率控制以及功率控制。
FPGA的工作過(guò)程:上電復(fù)位后,接收上位機(jī)初始化配置命令和數(shù)據(jù),進(jìn)行相應(yīng)配置;若有命令傳送過(guò)來(lái),則通過(guò)接口模塊接收上位機(jī)傳送過(guò)來(lái)的命令;命令接收完后,進(jìn)入指令分析狀態(tài),對(duì)接收到的命令進(jìn)行分析判斷。
在主控狀態(tài)機(jī)的控制下,發(fā)送模塊將把命令和內(nèi)容組成數(shù)據(jù)塊,進(jìn)行基帶編碼、循環(huán)冗余校驗(yàn)生成,并打包成符合協(xié)議規(guī)定的數(shù)據(jù)幀,傳送給射頻收發(fā)模塊,由其完成對(duì)信號(hào)的調(diào)制、放大、發(fā)射。電子標(biāo)簽根據(jù)接收的數(shù)據(jù)幀,進(jìn)行指令分析,根據(jù)指令執(zhí)行相應(yīng)的功能。接收模塊檢測(cè)回波數(shù)據(jù),當(dāng)檢測(cè)到回波數(shù)據(jù)的幀頭有效時(shí)接收數(shù)據(jù)。同時(shí)將接收到的數(shù)據(jù)送CRC校驗(yàn)?zāi)K校驗(yàn),校驗(yàn)成功即產(chǎn)生CRC OK=‘1’表示讀卡成功。
1.3.1 發(fā)送編碼模塊
在ISO/IECl4443 Type A協(xié)議中,讀寫(xiě)器到標(biāo)簽的通信采用改進(jìn)的Miller編碼方式,其標(biāo)準(zhǔn)中定義了三種序列:(A)經(jīng)64個(gè)時(shí)鐘后應(yīng)有一個(gè)凹槽;(B)1個(gè)位內(nèi)(128個(gè)時(shí)鐘)沒(méi)有調(diào)制;(c)1個(gè)位起始時(shí)有一個(gè)凹槽。這三種序列用于進(jìn)一步編碼。邏輯1用序列(A)表示。邏輯0通常用序列(B)表示,但在a.有兩個(gè)或兩個(gè)以上連續(xù)的0時(shí),從第二個(gè)0開(kāi)始要用序列(c)來(lái)表示所有相連的0;b.直接與起始幀相連的所有0用序列(c)表示。通信開(kāi)始用序列(c)表示。通信結(jié)束用邏輯0跟序列(B)表示。無(wú)信息用至少兩個(gè)序列(B)表示。如圖2所示改進(jìn)的Miller編碼波形。本文引用地址:http://m.butianyuan.cn/article/157117.htm
從波形中可以看出,若輸入1,則64個(gè)時(shí)鐘后輸出一個(gè)脈沖,若輸入0,則128個(gè)時(shí)鐘內(nèi)沒(méi)有脈沖輸出,而當(dāng)有兩個(gè)連續(xù)的0輸入時(shí),則在第二個(gè)0起始處輸出一個(gè)脈沖。通過(guò)對(duì)照理論波形,可以看出編碼完全正確,符合設(shè)計(jì)要求。
1.3.2 接收解碼模塊
在射頻收發(fā)模塊中進(jìn)行解調(diào)處理而得到的基帶信號(hào)將被送入FPGA進(jìn)行Manchester解碼、CRC校驗(yàn),并在主控狀態(tài)機(jī)的控制下通過(guò)RS232將數(shù)據(jù)傳送給上位機(jī)。在ISO/IECl4443 Type A協(xié)議中,電子標(biāo)簽到讀寫(xiě)器的通信采用Manchester編碼方式,其編碼規(guī)則是:某比特位的值由該比特長(zhǎng)度內(nèi)半個(gè)比特周期時(shí)電平的變化來(lái)表示,負(fù)跳變表示‘1’,正跳變表示‘0’。Manchester解碼即對(duì)Manchester編碼信號(hào)位的1/4和3/4處采樣,若采樣結(jié)果為(1,0),則解碼數(shù)據(jù)為1;若采樣結(jié)果為(0,1),則解碼數(shù)據(jù)為0。如圖3所示Manchester解碼波形。輸入數(shù)據(jù)為
l00100l1,解碼所得數(shù)據(jù)為147,用二進(jìn)制表示也即100100ll,可見(jiàn)解碼完全正確,符合設(shè)計(jì)要求。
評(píng)論