摘 要: 介紹了符合ISO/IEC15693標(biāo)準(zhǔn)的RFID標(biāo)簽芯片數(shù)字部分的基本架構(gòu)。設(shè)計了一種符合ISO/IEC15693標(biāo)準(zhǔn)的RFID標(biāo)簽芯片數(shù)字部分狀態(tài)機(jī)。采用Verilog語言編寫了程序,用Modelsim5.7進(jìn)行了功能仿真,并用Xilinx FPGA XC3S200進(jìn)行了下載驗證。該電路可應(yīng)用于符合ISO/IEC15693標(biāo)準(zhǔn)的RFID標(biāo)簽芯片的數(shù)字部分,對其它標(biāo)準(zhǔn)的RFID標(biāo)簽芯片數(shù)字部分的設(shè)計也有一定的借鑒作用。
關(guān)鍵詞: 射頻識別" title="射頻識別">射頻識別 狀態(tài)機(jī) 標(biāo)簽 讀卡器 ISO/IEC15693
射頻識別(RFID-Radio Frequency Identification)系統(tǒng)有著較大的數(shù)據(jù)容量和較快的讀寫速度,并且受環(huán)境影響小,與接觸式IC卡系統(tǒng)相比,由于沒有機(jī)械觸點,不存在觸點腐蝕和污染的問題,因而一誕生就備受重視,在銀行信用卡、貨物銷售、倉儲管理等方面獲得了廣泛應(yīng)用。
一個典型的RFID系統(tǒng)由閱讀器(VCD-Vicinity Coupling Device)、電子標(biāo)簽(VICC-Vicinity Integrated Circuit card)及計算機(jī)三個部分組成。電子標(biāo)簽的功能是儲存有關(guān)物體的數(shù)據(jù)信息,閱讀器的功能則是通過射頻信號自動識別目標(biāo)對象電子標(biāo)簽并獲取相關(guān)數(shù)據(jù)。本文所介紹的符合ISO/IEC15693標(biāo)準(zhǔn)的RFID系統(tǒng),閱讀器和電子標(biāo)簽之間的載波頻率為13.56MHz,采用半雙工的方式通訊,配合適當(dāng)?shù)奶炀€其有效作用距離為0~1m,理想情況下可以達(dá)到1.5m,具備抗沖突能力。
目前,VICC的數(shù)字部分的控制器有兩種:嵌入式CPU和狀態(tài)機(jī)。嵌入式CPU設(shè)計較為靈活,能實現(xiàn)較為復(fù)雜的加密算法,但是功耗較大、成本高;而狀態(tài)機(jī)則功耗低、成本低,因而在注重功耗和成本的RFID市場獲得了廣泛應(yīng)用,也為本文所采用。
1 VICC數(shù)字部分的構(gòu)成
VICC數(shù)字部分的組成模塊如圖1所示。包括脈沖位置解碼模塊、接收CRC校驗?zāi)K、CRC產(chǎn)生模塊、狀態(tài)機(jī)模塊、編碼和調(diào)制模塊、EEPROM和時鐘分頻" title="分頻">分頻模塊。脈沖位置解碼模塊接收從VICC模擬接口輸入的來自VCD的數(shù)據(jù),并將解碼數(shù)據(jù)輸出至接收CRC校驗?zāi)K和狀態(tài)機(jī)模塊。接收CRC校驗?zāi)K對數(shù)據(jù)進(jìn)行CRC校驗。狀態(tài)機(jī)模塊對輸入數(shù)據(jù)進(jìn)行處理,如讀寫EEPROM、防沖突" title="防沖突">防沖突控制等,處理完成后則將要發(fā)送的數(shù)據(jù)送至CRC產(chǎn)生模塊產(chǎn)生相應(yīng)的CRC校驗碼,然后將要發(fā)送的數(shù)據(jù)和校驗碼一起送編碼和調(diào)制模塊,經(jīng)處理后由VICC模擬接口發(fā)送至VCD。時鐘分頻模塊則將輸入的13.56MHz的頻率分別進(jìn)行四分頻和三十二分頻。分頻后的頻率分別交由數(shù)字部分其它模塊使用。EEPROM存儲電子標(biāo)簽的數(shù)據(jù)信息。
2 VICC狀態(tài)機(jī)的實現(xiàn)
VICC數(shù)字部分的關(guān)鍵是狀態(tài)機(jī),它是實現(xiàn)VICC功能的核心。VCD命令的處理、EEPROM的讀寫控制、數(shù)字部分各個模塊之間的協(xié)同工作,都離不開狀態(tài)機(jī)。
2.1 VICC狀態(tài)描述
根據(jù)ISO/IEC15693標(biāo)準(zhǔn),VICC有四種不同的狀態(tài):Power-off、Ready、Quiet和Selected。其中,Selected是可選擇的。每一個VICC在同一時間只能處于一種狀態(tài),不同狀態(tài)的VICC對同一命令的響應(yīng)是不同的。圖2是VICC的狀態(tài)轉(zhuǎn)移圖。
VICC沒有進(jìn)入VCD的場工作范圍" title="工作范圍">工作范圍時,VICC處于Power-off狀態(tài);進(jìn)入VCD的場工作范圍時,VICC通過天線感應(yīng)能量而啟動,進(jìn)入Ready狀態(tài);在VCD場工作范圍內(nèi),VICC根據(jù)VCD發(fā)出的命令進(jìn)行相應(yīng)的命令響應(yīng)和狀態(tài)轉(zhuǎn)移;VICC移出VCD場工作范圍時,不論VICC當(dāng)前處于什么狀態(tài),由于沒有能量供應(yīng),它都將進(jìn)入Power-off狀態(tài)。
2.2 VCD和VICC之間的通訊協(xié)議
VCD和VICC之間的通訊遵循VCD先說的原則,也就是VICC并不主動向VCD發(fā)送數(shù)據(jù),只有當(dāng)它接收到VCD命令并響應(yīng)時,它才向VCD發(fā)送相應(yīng)的數(shù)據(jù)。
VCD向VICC發(fā)送命令的格式如圖3所示。SOF表示幀頭;Command為命令碼; Flags為該命令所攜帶的標(biāo)記位,如Select_flag、Address_flag等;Parameter為該命令的參數(shù);Data為該命令所攜帶的數(shù)據(jù);CRC是校驗碼;EOF表示幀尾。
VICC響應(yīng)VCD命令并向VCD發(fā)送數(shù)據(jù)的格式如圖4所示。SOF表示幀頭,F(xiàn)lags表示該響應(yīng)處理正確與否的標(biāo)記位。Parameter為該響應(yīng)參數(shù),Data為該響應(yīng)所攜帶的數(shù)據(jù),CRC是校驗碼。EOF表示幀尾。
2.3 VICC狀態(tài)機(jī)實現(xiàn)流程
VICC共有四種狀態(tài),因而其實現(xiàn)程序應(yīng)對各種狀態(tài)分別處理。Power-off狀態(tài)表示VICC沒有上電的情況,程序中不需要對此狀態(tài)進(jìn)行處理。根據(jù)VCD和VICC之間的通訊協(xié)議,VICC在Ready狀態(tài)下對VCD命令響應(yīng)的工作流程如圖5所示。在其它兩種狀態(tài)即Quiet和Selected下,對VCD命令的響應(yīng)也是類似的。圖5中,符號①表示倘若當(dāng)前狀態(tài)不是Ready狀態(tài),則進(jìn)入Quiet或Selected狀態(tài)下對命令進(jìn)行處理。
?
2.4 防沖突處理
當(dāng)有兩個或兩個以上的VICC同時處于VCD場區(qū)時,則多個VICC響應(yīng)VCD命令可能產(chǎn)生沖突。當(dāng)VICC狀態(tài)機(jī)給VCD發(fā)送相應(yīng)命令的回復(fù)信息時,數(shù)據(jù)經(jīng)編碼和調(diào)制模塊處理后便串行發(fā)送至VCD。在編碼和調(diào)制模塊,VICC對要發(fā)送的每一位數(shù)據(jù)進(jìn)行曼徹斯特編碼,上跳沿表示數(shù)據(jù)“1”,下跳沿表示數(shù)據(jù)“0”。當(dāng)沖突發(fā)生時,即在同一時間段,一個VICC發(fā)送數(shù)據(jù)“1”,另外還有某一個VICC發(fā)送數(shù)據(jù)“0”,這兩個信號在VCD上疊加,使VCD在這一時間段接收不到跳變沿。從而判斷為發(fā)生了沖突。這時VCD將發(fā)送防沖突命令I(lǐng)nventory。
當(dāng)VICC收到Inventory命令時,狀態(tài)機(jī)進(jìn)入防沖突處理。狀態(tài)機(jī)先將當(dāng)前的時間片和Inventory指令中的掩膜值串接,所得到的位再和VICC唯一ID值對應(yīng)的位相比較,如圖6所示。
倘若時間片和掩膜值串接后的位和VICC唯一ID值對應(yīng)的位一致,則VICC響應(yīng)該VCD命令,返回VICC的唯一ID值和數(shù)據(jù)存儲格式的ID值,反之,則不響應(yīng)。在防沖突處理期間,若VICC接收到EOF,則將時間片加1,并進(jìn)行相同的比較處理。若接收到其它命令,狀態(tài)機(jī)退出防沖突狀態(tài)。
2.5 錯誤處理
當(dāng)VICC接收到CRC校驗錯誤的命令時,VICC狀態(tài)機(jī)放棄該命令,對該命令不予響應(yīng)。當(dāng)VCD向VICC發(fā)送的命令格式不正確,或是讀寫的字塊超出了VICC的最大值范圍時,VICC狀態(tài)機(jī)返回相應(yīng)的錯誤代碼,通知VCD發(fā)生了錯誤。VCD可根據(jù)錯誤代碼判斷錯誤類型。
3 系統(tǒng)的仿真波形與FPGA實現(xiàn)
ISE6.1是Xilinx FPGA/CPLD的綜合性集成設(shè)計平臺,該平臺集成了設(shè)計輸入、仿真、邏輯綜合、布局布線與實現(xiàn)、時序分析、芯片下載與配置、功率分析等幾乎所有設(shè)計流程所需的工具。本文在ISE6.1環(huán)境下編譯、仿真和下載。
圖7為狀態(tài)機(jī)接收到一個讀字塊命令后讀EEPROM時的仿真波形。Clk_fc4是狀態(tài)機(jī)的工作頻率" title="工作頻率">工作頻率,為了節(jié)省功耗,狀態(tài)機(jī)的工作頻率采用四分頻的載波頻率,也就是3.39MHz;Command_reg是狀態(tài)機(jī)接收到的命令寄存器信號,20表示讀一個字塊命令;Flag_rec_reg是狀態(tài)機(jī)接收到的標(biāo)志位寄存器信號,20表示Address_flag為“1”,其它標(biāo)志位都是“0”;Ee_rw是EEPROM讀寫控制信號,“0”表示讀EEPROM,“1”表示寫EEPROM。Ee_en表示讀寫EEPROM使能信號,高電平有效;Ee_addr是讀寫EEPROM的地址信號。Ee_data是讀寫EEPROM時的數(shù)據(jù)信號。Ee_rw_end是輸入信號,通知狀態(tài)機(jī),讀寫EEPROM結(jié)束,高電平有效。由于一個字塊為32個位,即四個字節(jié),所以狀態(tài)機(jī)在讀一個字塊時,Ee_en信號應(yīng)四次有效。
程序采用Xilinx Spartan-3系列X3S200芯片進(jìn)行綜合下載。綜合后共占用771個slice,34個IOB,系統(tǒng)最快運行速度為79.038MHz,遠(yuǎn)高于狀態(tài)機(jī)的工作頻率3.39MHz,滿足VICC狀態(tài)機(jī)的時序要求。
本設(shè)計應(yīng)用于符合ISO/IEC15693標(biāo)準(zhǔn)的RFID標(biāo)簽芯片的數(shù)字部分,具有可靠性高、結(jié)構(gòu)簡單等特點。由于其它標(biāo)準(zhǔn)的RFID標(biāo)簽芯片的數(shù)字部分功能與ISO/IEC15693 RFID標(biāo)簽芯片較為類似,因此,對狀態(tài)機(jī)部分做適當(dāng)?shù)男薷?,可?yīng)于其它標(biāo)準(zhǔn)的RFID標(biāo)簽芯片。
參考文獻(xiàn)
1 Klaus Finkenzeller著,陳大才譯.射頻識別(RFID)技術(shù).北京:電子工業(yè)出版社, 2002
2 Identification cards-Contactless Integrated Circuit(s) Cards-Vicinity Cards-Part1: Physical Characteristics.ISO/IEC15693-1,2000-07-15
3 Identification cards-Contactless Integrated Circuit(s) Cards-Vicinity Cards-Part2: Air Interface and Initialization. ISO/IEC15693-2,2001-10-15
4 Identification Cards-Contactless Integrated circuit(s) Cards- Vicinity Cards-Part3:Anticollission and Transmission Protocol.ISO/IEC15693-3,2001-04-01