射頻識別技術(RFID)是利用射頻方式進行遠距離通信以達到物品識別的目的,可以用來追蹤和管理幾乎所有物理對象。RFID系統(tǒng)一般包括閱讀器和標簽兩個部分,按照這兩部分通信頻率的不同,系統(tǒng)分為低頻(135 kHz以下)、高頻(13.56 MHz)、超高頻UHF(860~960 MHz)和微波(2.4 GHz以上)頻段幾大類。ISO/IEC 18000是基于物品管理的射頻識別的國際標準,按工作頻率分為7部分,其中第6部分規(guī)定的UHF頻段因為適合遠距離識別并且對環(huán)境影響較小而成為目前RFID產(chǎn)品發(fā)展的熱點。以下簡要介紹了ISO/IEC18000-6B協(xié)議的內(nèi)容,并給出了一種標簽邏輯部分的設計方法。
1 ISO/IEC18000-6B協(xié)議簡介
1.1 傳輸機制
ISO/IEC18000-6B協(xié)議的傳輸機制是基于“閱讀器先發(fā)言”的。閱讀器到標簽之間的數(shù)據(jù)傳輸采用ASK調(diào)制曼徹斯特(Manchester)編碼,調(diào)制深度是11%或99%,位速率為10 kb/s或40 kb/s(采用40 kb/s)。標簽到閱讀器之間的數(shù)據(jù)傳輸是反向散射調(diào)制,即通過調(diào)制入射并反向散射給閱讀器來傳輸信息,采用FM0編碼,數(shù)據(jù)速率是40 kb/s。
1.2 閱讀器命令格式
閱讀器與標簽以幀為單位進行數(shù)據(jù)傳輸。閱讀器到標簽的一幀通常由幀頭探測段、幀頭、分隔符、命令、參數(shù)、數(shù)據(jù)和CRC組成,見圖1。各部分內(nèi)容、功能介紹如下。
幀頭探測段(preamble detect):400μs穩(wěn)定的未經(jīng)調(diào)制的載波信號,用來給標簽充電;
幀頭(preamble):包含9 bit的曼徹斯特碼格式0,標志著通信的起始,即:010101010101010101;
分隔符(delimiter):一定數(shù)量、一定格式的數(shù)據(jù),作為間隔,為將來的命令擴展做準備;
命令參數(shù)(parameter)和數(shù)據(jù)(data):取決于前面的命令;
校檢(CRC-16):檢驗錯誤,采用標準的16 bitCRC-CCITT。
1.3 標簽的回答格式
標簽以幀為單位把數(shù)據(jù)傳送回閱讀器,一幀通常由靜默、返回幀頭、數(shù)據(jù)和CRC組成,見圖2。以下為各部分介紹。
靜默(quiet):標簽在沒有接收到命令之前或者接收到錯誤的命令之后,始終保持一種靜止狀態(tài)。只有接收到有效的閱讀器命令,才返回幀頭和數(shù)據(jù);
返回幀頭:為一固定數(shù)據(jù)“00 00 01 01 01 0101 01 01 01 00 01 10 11 00 01”;
數(shù)據(jù):取決于命令以及命令處理的結果;
CRC采用16 bit的數(shù)據(jù)編碼。
1.4 工作流程與防沖突機制
ISO/IEC18000-6B協(xié)議支持多枚標簽同時工作。多枚標簽同時工作時,先用選擇或反選擇命令選出UID的某些位符合要求的標簽(即處于識別狀態(tài)),之后進入防沖突機制進行沖突處理,隨機選出一枚標簽,對其進行讀寫等操作。完成一枚標簽的操作后再次進入防沖突,尋出并處理另一枚標簽,直到全部操作完畢。
防沖突機制需要兩種硬件電路,一個8位的計數(shù)器和一個01隨機數(shù)發(fā)生器。防沖突時,閱讀器發(fā)命令,所有處于識別狀態(tài)并且內(nèi)部計數(shù)器為0的標簽將發(fā)送它們的UID。若這樣的標簽有一個以上,閱讀器發(fā)“FAIL”命令,令內(nèi)部計數(shù)器不等于0的標簽將自己的計數(shù)器加1;內(nèi)部計數(shù)器等于0的標簽將加上一個“1”或“0”的隨機數(shù),如若仍然為0再次發(fā)送它們的UID。這之后有三種結果:處于識別狀態(tài)并且內(nèi)部計數(shù)器為0的標簽多于1,重復前面步驟;處于識別狀態(tài)并且內(nèi)部計數(shù)器為0的標簽等于1,選出了標簽;沒有處于識別狀態(tài)并且內(nèi)部計數(shù)器為0的標簽,那么閱讀器發(fā)“SUCCESS'’命令使標簽計數(shù)器全減1,重復前面加隨機數(shù)的步驟。這是種基于概率的防沖突機制。
2 邏輯部分設計與低面積方案
2.1 邏輯部分設計
閱讀器與標簽以幀為單位進行數(shù)據(jù)傳輸,設計的時候則以標簽一幀的接收處理直至返回幀結束為一次完整命令。一次完整命令從上電復位或者上一命令結束開始,按照幀的格式,進入400μs幀頭探測段,然后從幀頭的第一個0中采樣取得半bit信息,用于以后的編解碼。等確認過幀頭和分割符,則進入Manchester解碼和相關數(shù)據(jù)處理的階段,此為接收幀信號的主要階段。解碼結束如果CRC正確,就可以開始對命令進行相應處理。先進行命令相關的狀態(tài)處理,同時返回幀的靜默。約200μs后,發(fā)送返回幀頭,進入命令相關的讀寫數(shù)據(jù)處理,編碼返回值,并加上CRC的結果,最后復位,等待下一命令的到來。圖3為按照命令執(zhí)行步驟而設計的電路結構框圖。以下詳細說明各個部分。
上電復位Rst:Rst是剛上電時的異步復位,標簽的各種狀態(tài)初始化,標簽一次上電只工作一次。
命令結束復位Nrst:Nrst為工作中的同步復位。當標簽命令接收上有錯誤(如解碼錯、CRC錯等,指錯誤命令),或者處理完一次正確命令,都對其中的一些寄存器清零,等待下一次命令到來。
幀頭探測:幀頭探測段探測400μs穩(wěn)定的未經(jīng)調(diào)制的載波信號。探測時進行信號輸入Din為1的記數(shù),預設1 M工作頻率下400μs。當Din為0時則清零重新開始記數(shù),得到穩(wěn)定的400 μs。這也可以去除解碼錯誤導致的復位之后還有可能存在Din的剩余部分數(shù)據(jù),以避免當成下一次幀頭。
半bit采樣:采樣為幀頭9個01的第一個0的一段,記錄其點數(shù)到5位的C_halfbit,用于以后的編解碼。由于模擬部分進來的時鐘會有偏差,設計時并不將半bit理論上12.5個采樣點定死。5位C halfbit值從0到31,解碼時要求C_halfbit加6不能溢出,所以最多25,是12.5的2倍,即工作頻率上限2 MHz。另外解碼時要求C_halfbit加5不能大于一個bit的點數(shù),C halfbit至少有6,約12.5的一半,即工作頻率下限為0.5 MHz。
確認幀頭和分割符:幀頭和分割符是固定值,根據(jù)C_halfbit點數(shù)設定電平變換范圍和次數(shù)。如果出錯,進入Nrst,復位重新開始下一命令。Manchester解碼:曼徹斯特碼以0到1二位表示傳輸值零(圖4中11~13),以1到0二位表示傳輸值1(圖4中13~15),其特點是一位碼中間(如12和14處)必有0與1的跳變。解碼時從跳變處開始計數(shù),在C_halfbit值加5與2倍的C_halfbit加6之間,若是出現(xiàn)Din與上一個時鐘的Din不同,則說明有變號,也就是說解碼成功,碼值為上一個Din的值。如圖4中13~14那一段,為1解出傳輸值1然后重新開始記數(shù)解下一碼。若是記數(shù)超出上面的范圍,那么認為解碼錯誤,進入Nrst。至于第1位碼,它前面是分割符,從分割符“1100111010'’的最后一個0起始處開始解曼徹斯特碼即可。解碼的同時判斷Cmd、Add1(解碼時用)、Add2(編碼時用)、Byt等,并將相應內(nèi)容存下來,在需要與EEPROM比較時進行實時比較。全部解碼值隨解碼的過程都送入CRC,到設定的判定條件進行判斷,正確的話繼續(xù)進行下一步,錯誤則進Nrst。
多種狀態(tài)處理:多種狀態(tài)處理是指標簽的4種工作狀態(tài)之間的轉(zhuǎn)換(斷電、準備、識別、數(shù)據(jù)交換)、防沖突時用的8位記數(shù)器、隨機數(shù)的處理以及退出到Nrst等。根據(jù)命令以及當前標簽狀態(tài),會有多種不同的結果,決定后面數(shù)據(jù)返回的形式及有無。
靜默與返回幀頭:CRC正確后,在處理各種狀態(tài)的同時,標簽進入返回信號的靜默狀態(tài)。這里開始使用一個記數(shù)器,從0到C_halfbit一個周期,以這樣的一個周期執(zhí)行一次操作,相當于用了一個比較精確頻率80 kHz的新時鐘。靜默約200μs以后返回固定的幀頭。
FM0編碼返回與CRC:FM0編碼如圖5,編碼時設計一個反相器,01翻轉(zhuǎn),0的時候讓輸出變號,1的時候根據(jù)碼值變號,即碼值0輸出變號,碼值1輸出不變。在編碼返回值的同時根據(jù)需要完成對EEPROM的讀寫操作。最后加上翻轉(zhuǎn)了的CRC值。
2.2 設計中采用減少面積的方案
2.2.1 命令分類
不同命令在收、發(fā)、狀態(tài)處理階段都作了分類,命令有8個選擇/反選命令、FAIL、SUCCESS、INITIALIZE, RESEND、 READ、DATA_READ、WRITE、LOCK和自己加的命令代碼為“10”的CHIP_ERASE。
在接收信號時,按信號中有沒有值與EEPROM比較、與EEPROM中UID還是給定地址比較分類;存Add1、Add2、Byt時,按有沒有存儲需求分類;用CRC判斷正誤,按應該接收的長度分類;在狀態(tài)處理時,按狀態(tài)操作的相似性分類;在發(fā)送信號時,按發(fā)送固定值還是EEPROM中值、EEPROM中UID還是給定地址值分類;判斷CRC開始與結束,按發(fā)送的長度分類。比如8個選擇/反選命令,在接收信號與發(fā)送信號時是相同的操作,只有狀態(tài)處理不同。
2.2.2 實時處理
在接收與發(fā)送信號的過程中,有比較多的命令有一次性的比較或讀取值,設計中采用了實時處理避免存儲這些信號。接收信號時,解碼一位,送入CRC校驗一位,并根據(jù)命令分類,到達比較條件時比較一位,然后留下比較的大小,舍棄該位。發(fā)送信號時,也是逐位讀取逐位發(fā)送,并送入CRC,舍棄該位。
2.2.3 資源共享
設計中比較多地應用了資源共享,以減少硬件,如編碼解碼CRC不同時間下的共享、地址寄存器和數(shù)據(jù)寄存器在不同命令下的共享、信號接收時所有64 bit比較的共享|返回幀新時鐘的共享等。下面說明地址寄存器、數(shù)據(jù)寄存器的共享與64 bit比較的共享。
標簽一次只處理一個命令,所以地址寄存器、數(shù)據(jù)寄存器可以進行不同命令下的共享。地址寄存器Addl存接收時給EEPROM的地址,在Nrst或Rst時清零,選擇/反選命令時存下新地址。Addl存下新地址,則讀取的為新地址下的值;Addl未存新地址,那么命令不是選擇/反選命令,由于幀開始時的清零,讀取的為UID。地址寄存器Add2存發(fā)送時給EEPROM的地址,同樣,存下新地址則讀該地址值,未存時則由于清零讀取UID。數(shù)據(jù)寄存器Byt在WRITE命令時存要寫的值,選擇/反選命令時存用于比較的掩碼。
64 bit比較的共享指接收時所有要求比較的命令下的共享。比較時設計了一個大于與一個小于的標志,只要有一個標志置位(值為1),表明比較已出結果,結束比較。在未出結果的情況下,進行一位的比較,并根據(jù)結果改變大于與小于標志,如果相等,則不改變,等待下一次比較。根據(jù)大于與小于兩個標志,可以得到狀態(tài)處理時用的等于、不等于、大于、小于這4個值。
3 設計結果
3.1 FPGA功能驗證
將代碼下載到FPGA板上輸入測試信號,在邏輯分析儀中查看波形,如圖6,Bus1_0為輸入,Bus1_1為標簽的返回信號。Bus1_1根據(jù)Busl_0不同而做出相應不同的反應,并且能屏蔽返回值時可能有的Busl_0信號,如第二、四幀不做處理(處理一、三幀中)。圖7與圖8為接受信號與返回信號的起始處放大圖。
3.2 規(guī)模與功耗
本設計用DC綜合,在SMIC 0.18 μm工藝下cell數(shù)為837個(其中寄存器約160),總面積為24 791μm2,以最小與非門9.98μm2估算,約2 500門。
用Primepower對仿真進行功耗分析,在讀與寫操作時都約為10.6 μW。功耗集中在時鐘上,從SMIC 0.18 μm工藝文檔中得測試頻率下面一個典型寄存器時鐘翻轉(zhuǎn)產(chǎn)生約0.032μW,乘上個數(shù)約160以及2(一個時鐘二次翻轉(zhuǎn)),約10.2 μW,與仿真軟件結果相近。
3.3 版圖
自動布局線設計的版圖如圖9所示,有三個輸入,分別為Clk、Din、Rst,一個輸出為Dout。版圖通過了DRC(設計規(guī)則檢查)和LVS(版圖與電路圖一致比較),正在流片中。
4 結語
本文基于ISO/IEC 18000-6B協(xié)議設計了標簽的邏輯部分,并運用命令分類、實時處理、資源共享等技術減少資源,在SMIC 0.18 μm工藝下綜合生成電路面積約24 791 μm2,約2 500門,功耗10.6μW,工作于1 MHz附近(0.5~2 MHz)。電路在面積、規(guī)模上比較小,但功耗比較大,與國外目前較低的0.318 μW還存在不少差距,用門控時鐘技術以及設計低功耗器件以減少功耗是以后的目標。