孫 笠
(北京郵電大學國際學院物聯(lián)網工程 北京 100876)
一種UHF RFID讀寫器的設計方法
孫 笠
(北京郵電大學國際學院物聯(lián)網工程 北京 100876)
本文介紹了一種基于ISO/IEC 18000-6 Type B標準的讀寫器設計,并給出了RFID讀寫器的系統(tǒng)硬件設計和軟件流程設計。讀寫器采用零中頻收發(fā)結構作為射頻前端模塊,采用PHILIPS公司的P89LPC932A1單片機作為數字基帶處理模塊,并通過UAR或USB與計算機(主機)進行通信。
ISO/IEC 18000-6 Type B防沖突機制
進入場區(qū)的標簽主要有三種狀態(tài):
(1)READY;
(2)ID;
(3)DATA EXCHANGE。
為解決防沖突算法問題,標簽內應具有以下兩種硬件電路:
(1)一個8位的計數器;
(2)一個隨機數發(fā)生器(產生“0”或“1”)。
當標簽進入ID狀態(tài)的同時把它們內部的計數器清“0”。它們中的一部分可以通過接收GROUP_UNSELECT指令重新回到READY狀態(tài),其他處在ID狀態(tài)的標簽就進入了防沖突碰撞判斷流程中。
讀寫器射頻前端采用零中頻接收結構,發(fā)送和接收通路隔離采用多天線技術,其系統(tǒng)硬件結構如圖1所示。由頻率綜合器產生所需要的射頻信號,然后經過功分器得到兩路載波信號,分別用于發(fā)送通路和接收通路。發(fā)送通路采用OOK調制,基帶信號通過開關通斷控制載波是否經過功放,并由天線發(fā)送;接收通路中接收信號先經過功分、放大等操作,然后分別送到混頻器和兩路正交的載波信號進行混頻,對混頻之后的信號經過濾波、放大、電平比較等操作,恢復出數字基帶信號。該系統(tǒng)之所以采用兩路正交混頻結構,主要是為了避免射頻場中存在的盲點。如果只采用一路接收信號,當接收信號的相位和本振信號的相位相差90度,混頻后的信號始終為零,即有用信號沒有解調出來。但采用正交I和Q兩路接收信號,無論相位延時是多少,I和Q中總有一路能解調出有用信號。
圖1 讀寫器硬件系統(tǒng)結構
讀寫器的數字基帶處理模塊采用PHILIPS公司的P89LPC932A1單片機,P89LPC932A1采用了高性能處理器結構,指令執(zhí)行只需2到4個時鐘周期,6倍于標準80C51。它具有512字節(jié)片內附加RAM,8K FLASH程序存儲器以及增強型UART。該數字模塊主要完成協(xié)議指令處理,防沖突算法以及通信數據的編解碼和校驗。
3.1 數字基帶的整體設計
讀寫器數字基帶整體結構如圖2所示,其中包括串口通信模塊,指令處理模塊,回波處理模塊以及數據編解碼模塊。
圖2 數字基帶模塊框圖
讀寫器是在計算機(主機)監(jiān)控之下進行工作,兩者之間形成主從通信模式。讀寫器接收到主機發(fā)來的指令,由譯碼模塊確定讀寫器的具體操作。操作分為兩大類,一類是對讀寫器操作,包括讀版本信息,設置工作頻率模式(固定頻率和跳變頻率)和IAP軟件升級等,處理完成后將信息通過UART返回給主機;另一類是對標簽操作,其中包括防沖突讀卡號,讀標簽和寫標簽等,該操作指令通過Manchester編碼器發(fā)送后,等待回波返回數據通過FM0解碼器后進入回波處理模塊,數據正確則通過UART返回給主機。
3.2 防沖突算法的實現
根據ISO/IEC18000-6B防沖突算法,針對讀寫器特定的應用要求,完成如圖3所示防沖突讀卡號流程。首先讀寫器發(fā)送GROUP SELECT指令,進入場區(qū)的標簽將內部計數器清“0”,并返回UID。如果返回數據錯誤,則發(fā)送RESEND指令,連續(xù)2次RESEND指令后,返回數據仍然錯誤,則認為場區(qū)內存在多張卡,發(fā)送FAIL指令,進行防沖突。如果返回數據正確,則發(fā)送DATA READ指令,使該標簽離開ID狀態(tài),不在進行防沖突過程,然后發(fā)送SUCCESS指令,繼續(xù)讀卡。如果連續(xù)5次沒有回波相應,則認為場區(qū)無卡,結束防沖突讀卡。
3.3 Manchester編碼器設計
Manchester編碼是在1個位窗內采用電平變化來表示邏輯“1”(下降沿)和邏輯“0”(上升沿)的。Manchester編碼特點,“10”代表數據“1”,“01”代表數據“0”。根據其特點,編碼過程如下:首先取數據,循環(huán)左移,根據移出位判斷編碼操作,左移8次后,取下一個數據,重復上述操作,直到發(fā)送完所有數據,編碼結束。
3.4 FM0解碼器設計
FM0編碼是在1個位窗內采用電平變化來表示邏輯,如果電平只在位窗的起始處翻轉則表示數據“1”;如果電平除了在位窗的起始處翻轉,還在位窗的中間翻轉則表示為數據“0”。
FM0編碼特點如下:“11”和“00”代表數據“1”,“01”和“10”代表數據“0”。
解碼過程:首先讀寫器同時對I和Q兩路信號進行采樣,利用狀態(tài)機檢測返回幀頭的正確性,讀寫器根據幀頭的正確性來決定對I或Q路信號進行解碼。針對FM0編碼的特點可知,FM0每個數據單元的起始處發(fā)生翻轉,由此可以根據起始處的上升沿或下降沿以及位窗中的采樣點來判斷出此位窗所表示的數據。設定一個位窗時間長度為T,一種情況是位窗起始處為下降沿,在該位窗3/4T處采樣,采樣為1則位窗表示數據“0”,采樣為0則位窗表示數據“1”;另一種情況是位窗起始處為上升沿,在該位窗3/4T處采樣,采樣為1則位窗表示數據“1”,采樣為0則位窗表示數據“0”。
提出了基于P89LPC932A1單片機的超高頻讀寫器設計,根據ISO/IEC18000-6B標準,實現了UHF頻段防沖突碰撞讀取標簽卡號,讀寫標簽數據等功能,最后針對通信數據的特點分別提出了Manchester編碼和FM0解碼流程。讀寫器在完成硬件和軟件設計后進行了制版、調試和測試,并最終實現了產品化。此系統(tǒng)也為研究RFID讀寫器的SoC設計提供了一定的參考價值。