《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的915 MHz射頻讀卡器設(shè)計(jì)
基于FPGA的915 MHz射頻讀卡器設(shè)計(jì)
來(lái)源:微型機(jī)與應(yīng)用2011年第3期
楊碧華1,,文張斌2
(1.暨南大學(xué) 信息科學(xué)技術(shù)學(xué)院,,廣東 廣州 510632,; 2.暨南大學(xué) 信息技術(shù)研究所,廣東 廣
摘要: 參照ISO/IEC 18000-6 Type B 協(xié)議設(shè)計(jì)了一款工作頻率為915 MHz的射頻讀卡器,,采用FPGA完成協(xié)議中規(guī)定的數(shù)字信號(hào)處理,C8051F020單片機(jī)作為主控器。利用Verilog HDL硬件描述語(yǔ)言,,搭建FPGA內(nèi)部各個(gè)小模塊及系統(tǒng)的驗(yàn)證平臺(tái),選用Altera公司Cyclone系列的EP1C6Q240C8芯片為目標(biāo)器件,,使用Quartus II進(jìn)行綜合,,并通過(guò)時(shí)序和功能驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,,該讀卡器符合ISO/IEC 18000-6 Type B 協(xié)議要求,,具有結(jié)構(gòu)靈活、體積小,、升級(jí)容易等優(yōu)點(diǎn),。
Abstract:
Key words :

摘  要: 參照ISO/IEC 18000-6 Type B 協(xié)議設(shè)計(jì)了一款工作頻率為915 MHz的射頻讀卡器,,采用FPGA完成協(xié)議中規(guī)定的數(shù)字信號(hào)處理,C8051F020單片機(jī)作為主控器,。利用Verilog HDL硬件描述語(yǔ)言,,搭建FPGA內(nèi)部各個(gè)小模塊及系統(tǒng)的驗(yàn)證平臺(tái),選用Altera公司Cyclone系列的EP1C6Q240C8芯片為目標(biāo)器件,,使用Quartus II進(jìn)行綜合,,并通過(guò)時(shí)序和功能驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,,該讀卡器符合ISO/IEC 18000-6 Type B 協(xié)議要求,,具有結(jié)構(gòu)靈活、體積小,、升級(jí)容易等優(yōu)點(diǎn),。
關(guān)鍵詞: 射頻識(shí)別;讀卡器,;FPGA,;C8051F020

    射頻識(shí)別(RFID)技術(shù)是一種非接觸式的自動(dòng)識(shí)別技術(shù),通過(guò)射頻信號(hào)自動(dòng)識(shí)別目標(biāo)對(duì)象并獲取相關(guān)信息,。通常RFID系統(tǒng)主要由應(yīng)用軟件,、射頻卡以及讀卡器三部分構(gòu)成[1]。相對(duì)于低頻段的RFID系統(tǒng),,工作在860 MHz~960 MHz的超高頻段(UHF)RFID系統(tǒng)有著讀取距離遠(yuǎn),、閱讀速度快等優(yōu)點(diǎn),是目前國(guó)際上RFID技術(shù)發(fā)展的熱點(diǎn)[2],。讀卡器的設(shè)計(jì)是RFID系統(tǒng)設(shè)計(jì)中的關(guān)鍵部分,,設(shè)計(jì)方案有很多種。FPGA[3]具有開(kāi)發(fā)簡(jiǎn)單,、靜態(tài)可重復(fù)編程和動(dòng)態(tài)在線編程的特點(diǎn),,已經(jīng)成為當(dāng)今應(yīng)用最廣泛的可編程專用集成電路。目前生產(chǎn)RFID產(chǎn)品的很多公司都使用自己的標(biāo)準(zhǔn),,可供射頻卡使用的幾種標(biāo)準(zhǔn)有ISO/IEC 11784,、ISO/IEC 14443、ISO/IEC 15693和ISO/IEC 18000等,。其中應(yīng)用最多的是ISO/IEC 14443,、ISO/IEC 15693和ISO/IEC 18000這三個(gè)標(biāo)準(zhǔn)[4]。本文基于ISO/IEC 18000-6 Type B協(xié)議設(shè)計(jì)了一款工作頻率為915 MHz的讀卡器,。
1 讀卡器的硬件設(shè)計(jì)
    讀卡器的硬件可以分為三大模塊:FPGA數(shù)字信號(hào)處理模塊,、MCU及人機(jī)接口模塊和射頻收發(fā)模塊,其結(jié)構(gòu)框圖如圖1所示,。FPGA數(shù)字信號(hào)處理模塊用來(lái)實(shí)現(xiàn)ISO/IEC 18000-6 Type B 協(xié)議中規(guī)定的基帶數(shù)據(jù)編解碼,,MCU及人機(jī)接口模塊用來(lái)實(shí)現(xiàn)指令的跳轉(zhuǎn)控制和返回?cái)?shù)據(jù)的顯示等一些操作接口,,射頻收發(fā)模塊用來(lái)處理前端的超高頻信號(hào)。

1.1 FPGA數(shù)字信號(hào)處理模塊
    FPGA數(shù)字信號(hào)處理模塊包含時(shí)鐘分頻模塊,、FIFO,、曼徹斯特編碼器、CRC生成校驗(yàn),、FM0解碼器,、串并變換電路及對(duì)應(yīng)的幀發(fā)送接收控制器,其結(jié)構(gòu)框圖如圖2所示,。

該模塊的內(nèi)部工作流程如下:
    (1)發(fā)送部分
    ①數(shù)據(jù)通信接口8 bit并行接收來(lái)自MCU的命令數(shù)  據(jù),,數(shù)據(jù)在FIFO中緩沖。
    ②數(shù)據(jù)做并行到串行的轉(zhuǎn)換,。
    ③在發(fā)送控制器的控制下,,串行數(shù)據(jù)通過(guò)CRC模塊,生成16 bit的CRC校驗(yàn)值,,并附加在原數(shù)據(jù)的后面,。
    ④根據(jù)ISO/IEC 18000-6 Type B協(xié)議規(guī)定,把上述的數(shù)據(jù)進(jìn)行曼徹斯特編碼,。
    ⑤把已經(jīng)過(guò)曼徹斯特編碼的數(shù)據(jù)引向一個(gè)已預(yù)置幀頭的移位寄存器,,數(shù)據(jù)一到便啟動(dòng)移位寄存器,然后把輸出數(shù)據(jù)傳送給射頻收發(fā)模塊,。
   (2)接收部分
    ①?gòu)纳漕l收發(fā)模塊接收一幀基帶信號(hào),,用移位寄存器來(lái)檢測(cè)幀頭。若檢測(cè)到幀頭,,則發(fā)一個(gè)收到幀頭的信號(hào)給接收控制器,。
    ②若接收控制器接收到幀頭的信號(hào),則馬上啟動(dòng)FM0解碼,。
    ③解碼后的數(shù)據(jù)傳送給串/并行的轉(zhuǎn)換電路,,轉(zhuǎn)換后的數(shù)據(jù)暫存在FIFO。
    ④同時(shí)解碼后的數(shù)據(jù)也送給CRC模塊進(jìn)行校驗(yàn),,若校驗(yàn)結(jié)果錯(cuò)誤,,則清除存于FIFO中的數(shù)據(jù),通知MCU其接收的數(shù)據(jù)錯(cuò)誤,;若校驗(yàn)結(jié)果正確,則把FIFO中的數(shù)據(jù)傳送給MCU,。
1.2 MCU及人機(jī)接口模塊
    MCU及人機(jī)接口模塊以C8051F020單片機(jī)[5]為核心,,由FPGA接口、LCD,、PS/2鍵盤,、UART接口以及JTAG接口等外圍電路組成,,其結(jié)構(gòu)框圖如圖3所示。

    該模塊實(shí)現(xiàn)的功能有:(1)C8051F020負(fù)責(zé)整個(gè)讀卡器內(nèi)各部分的協(xié)調(diào)工作(包括與計(jì)算機(jī)的數(shù)據(jù)通信),;(2)在啟動(dòng)時(shí)向FPGA傳送配置數(shù)據(jù),,初始化FPGA;(3)在讀卡過(guò)程中向FPGA傳送讀卡命令,,然后通過(guò)INT1中斷啟動(dòng)接收FPGA信號(hào),;(4)處理接收回來(lái)的射頻卡信息(卡號(hào)、密碼等),;(5)實(shí)現(xiàn)二進(jìn)制樹(shù)形防碰撞功能,;(6)驅(qū)動(dòng)LCD,顯示系統(tǒng)的提示信息,;(7)擴(kuò)展一個(gè)PS/2鍵盤,,可以輸入數(shù)據(jù)及命令;(8)控制TR1000芯片,,設(shè)置OOK發(fā)射方式或ASK接收方式,;(9)控制發(fā)射功率大小,;(10)擴(kuò)展EEPROM,,存儲(chǔ)讀出的射頻卡的信息。
1.3 射頻收發(fā)模塊
    超高頻段射頻收發(fā)模塊的開(kāi)發(fā)一般可以采用兩種方案:一是采用分立元件搭建射頻電路,;二是采用無(wú)線射頻收發(fā)模塊以實(shí)現(xiàn)基帶信號(hào)的調(diào)制解調(diào)[6],。由于第一種方法的電路調(diào)試比較麻煩,而且會(huì)占用很長(zhǎng)的開(kāi)發(fā)時(shí)間,,所以本設(shè)計(jì)采取第二種方案,。
    ISO/IEC 18000-6 Type B 協(xié)議規(guī)定讀卡器到射頻卡端的射頻調(diào)制方式為調(diào)制深度為99%的ASK調(diào)制,也就是可以近似看作為OOK調(diào)制,;而射頻卡到讀卡器端的射頻調(diào)制方式為反向散射調(diào)制,,其調(diào)制方式與ASK調(diào)制類似,所以在解調(diào)端可以按照ASK方式解調(diào),。射頻收發(fā)模塊的核心芯片采用RFM公司的TR1000芯片,。TR1000是一款單片OOK/ASK通用無(wú)線射頻收發(fā)器芯片,適合高穩(wěn)定,、小尺寸,、低功率、低價(jià)格的短距離無(wú)線數(shù)據(jù)通信和無(wú)線控制應(yīng)用,。
2 讀卡器的軟件系統(tǒng)設(shè)計(jì)
    軟件設(shè)計(jì)采用模塊化和結(jié)構(gòu)化的編程思想,,在初始化的時(shí)候由單片機(jī)配置FPGA。考慮到C語(yǔ)言可讀性強(qiáng),,移植性好以及MCU的實(shí)際情況,,本設(shè)計(jì)采用C語(yǔ)言對(duì)C8051F020進(jìn)行編程。讀卡器的軟件系統(tǒng)大致可以分為:讀寫卡操作程序,、防沖突程序和串行通信程序,。
2.1 讀寫卡操作程序
    讀寫卡操作程序完成基于ISO/IEC 18000-6 Type B協(xié)議的基帶信號(hào)編解碼,其程序設(shè)計(jì)流程圖如圖4所示,。
具體工作過(guò)程如下:(1)上電復(fù)位,,系統(tǒng)初始化,包括單片機(jī)時(shí)鐘,、端口,、LCD、定時(shí)器的初始化,,配置FPGA和開(kāi)中斷,。(2)等待接收上位機(jī)或鍵盤發(fā)送的指令。(3)對(duì)指令進(jìn)行判斷,,如果為多卡操作,,則進(jìn)入防沖突子程序;如果為單卡操作,,則直接進(jìn)行讀卡,、寫卡、值操作和中止操作,。(4)若操作成功,,所得數(shù)據(jù)回傳給上位機(jī),同時(shí)驅(qū)動(dòng)LCD顯示操作成功信息,;若操作失敗,,則驅(qū)動(dòng)LCD顯示操作失敗信息。

2.2 防沖突程序
    當(dāng)讀卡器對(duì)射頻卡進(jìn)行多卡操作時(shí),,在其天線覆蓋范圍內(nèi)的所有射頻卡將被激活,,并處于識(shí)別狀態(tài),造成了多張射頻卡讀寫沖突,。所以解決沖突是多卡操作的關(guān)鍵,。ISO/IEC 18000-6 Type B協(xié)議詳細(xì)規(guī)定了防沖突機(jī)制,其程序設(shè)計(jì)流程圖如圖5所示,。該防沖突機(jī)制的原理是利用隨機(jī)產(chǎn)生的0和1信號(hào)實(shí)現(xiàn)二進(jìn)制樹(shù)形搜索,,并且設(shè)定了成功命令,進(jìn)一步提高了搜索的效率,,是一種二進(jìn)制樹(shù)形的防沖突算法[7],。具體實(shí)現(xiàn)過(guò)程為:首先,射頻卡進(jìn)入讀卡器的工作范圍,從離場(chǎng)掉電狀態(tài)進(jìn)入就緒狀態(tài),。讀卡器可以通過(guò)GroupSeleet命令和GroupUnseleet命令讓讀卡器工作范圍內(nèi)處于就緒狀態(tài)的所有或部分的射頻卡參與防沖突過(guò)程。針對(duì)該模式的防沖突機(jī)制,,射頻卡應(yīng)該具有如下兩種硬件電路:一個(gè)8 bit的計(jì)數(shù)器和一個(gè)0,、1隨機(jī)數(shù)發(fā)生器。當(dāng)射頻卡進(jìn)入識(shí)別狀態(tài)(ID狀態(tài))后,,將其內(nèi)部的計(jì)數(shù)器清0,,其中的一部分可以通過(guò)接收GroupUnselect命令重新回到就緒狀態(tài),其他處于識(shí)別狀態(tài)的射頻卡則進(jìn)入了防沖突執(zhí)行的過(guò)程中,。被選中的射頻卡開(kāi)始下面的循環(huán):(1)所有處于識(shí)別狀態(tài)并且內(nèi)部計(jì)數(shù)器為0的射頻卡將發(fā)送其識(shí)別碼,;(2)如果有一個(gè)以上的射頻卡發(fā)送識(shí)別碼時(shí),讀卡器將檢測(cè)到?jīng)_突而發(fā)送Fail命令,;(3)所有接收到Fail命令并且內(nèi)部計(jì)數(shù)器不等于0的射頻卡將把本身的計(jì)數(shù)器加1,;所有接收到Fail命令并且內(nèi)部計(jì)數(shù)器等于0的射頻卡(即剛剛發(fā)送過(guò)應(yīng)答的射頻卡)將產(chǎn)生一個(gè)1或0的隨機(jī)數(shù)。如果選擇了1,,射頻卡將把自己的計(jì)數(shù)器加1,;如果選擇了0,射頻卡將保持計(jì)數(shù)器為0并且再次發(fā)送它們的識(shí)別碼,。在接下來(lái)的過(guò)程中會(huì)出現(xiàn)4種可能的情況,;(4)情況1:如果有一個(gè)以上的射頻卡發(fā)送,將重復(fù)步驟(2),;(5)情況2:如果所有的射頻卡都隨機(jī)選擇了1,,讀卡器將接收不到應(yīng)答,此時(shí),,讀卡器將會(huì)發(fā)送Success命令,,所有的射頻卡的計(jì)數(shù)器減1,然后計(jì)數(shù)器等于0的射頻卡開(kāi)始發(fā)送,,接著重復(fù)步驟(2),;(6)如果只有一個(gè)射頻卡發(fā)送并且它的識(shí)別碼被讀卡器正確接收,讀卡器將發(fā)送包含識(shí)別碼的DataRead命令,,射頻卡正確接收該條命令后將進(jìn)入數(shù)據(jù)交換狀態(tài),,開(kāi)始發(fā)送它的數(shù)據(jù)。此后,,讀卡器將發(fā)送Success命令,,使處于識(shí)別狀態(tài)的射頻卡的計(jì)數(shù)器減1;(7)情況3:如果只有一個(gè)射頻卡的計(jì)數(shù)器等于0并且返回應(yīng)答,,重復(fù)步驟(5)讀卡器發(fā)Success命令或重復(fù)步驟(6)發(fā)送DataRead命令,;如果有一個(gè)以上的射頻卡返回應(yīng)答,重復(fù)步驟(2);(8)情況4:如果只有一個(gè)射頻卡返回應(yīng)答,,并且它的識(shí)別碼未被正確接收,,讀卡器將發(fā)送一個(gè)Resend命令。如果識(shí)別碼被正確接收,,重復(fù)步驟(5),。如果識(shí)別碼被重復(fù)幾次的接收(這個(gè)次數(shù)可以基于系統(tǒng)所希望的錯(cuò)誤處理標(biāo)準(zhǔn)來(lái)設(shè)定),就假定有一個(gè)以上的射頻卡在響應(yīng),,重復(fù)步驟(2),。

    經(jīng)過(guò)如上的防沖突過(guò)程,射頻場(chǎng)內(nèi)的射頻卡將可以逐一被識(shí)別并進(jìn)行數(shù)據(jù)交換,。
2.3 串行通信程序
    系統(tǒng)使用PC機(jī)作為上位機(jī),,讀卡器作為下位機(jī)。上位機(jī)與下位機(jī)之間的通信采用基于RS-232-C的串口通信,。RS-232-C是一種串行通信總線標(biāo)準(zhǔn),,是數(shù)據(jù)終端設(shè)備(DTE)和數(shù)據(jù)通信設(shè)備(DCE)之間的接口標(biāo)準(zhǔn),不同廠家生產(chǎn)的設(shè)備,,只要它們都具有RS-232-C標(biāo)準(zhǔn)接口,,則不需要任何轉(zhuǎn)換電路,就可以互相插接起來(lái),。
串行通信程序是MCU與PC機(jī)通信的控制程序,。發(fā)送程序采用查詢的方式設(shè)計(jì),即把待發(fā)送的數(shù)據(jù)先送到緩沖區(qū)中,,然后查詢串口發(fā)送中斷標(biāo)志是不是有空,,若有空就發(fā)送下一個(gè)數(shù)據(jù)。
    接收程序采用中斷的方式設(shè)計(jì),,即當(dāng)PC機(jī)要發(fā)數(shù)據(jù)給MCU時(shí),,主動(dòng)向MCU申請(qǐng)中斷,接收中斷標(biāo)志有效,,則PC向MCU傳送數(shù)據(jù),。
3 驗(yàn)證方案
3.1 驗(yàn)證平臺(tái)的建立
    為了驗(yàn)證所設(shè)計(jì)的讀卡器能否完成預(yù)期的功能,設(shè)計(jì)了相應(yīng)的驗(yàn)證平臺(tái)[8],。驗(yàn)證平臺(tái)由數(shù)據(jù)解碼通道,、數(shù)據(jù)編碼通道以及指令分析器三部分組成。數(shù)據(jù)解碼通道是對(duì)讀卡器發(fā)送出的數(shù)據(jù)幀進(jìn)行解碼,,提取指令的原始數(shù)據(jù),;指令分析器是對(duì)收到的指令數(shù)據(jù)進(jìn)行判斷,同時(shí)返回相應(yīng)的數(shù)據(jù)并發(fā)送給數(shù)據(jù)編碼通道,;數(shù)據(jù)編碼通道則是對(duì)發(fā)送來(lái)的數(shù)據(jù)進(jìn)行編碼,,再發(fā)送給讀卡器,。
    平臺(tái)采用Verilog HDL硬件語(yǔ)言搭建,選用Altera公司Cyclone系列的EP1C6Q240C8芯片為目標(biāo)器件,,使用Quartus II進(jìn)行綜合驗(yàn)證,,其結(jié)構(gòu)框圖和電路原理圖分別如圖6、圖7所示,。

3.2 測(cè)試結(jié)果分析
    (1)時(shí)序分析
    通過(guò)運(yùn)行QuartusII 7.1自帶的時(shí)序分析器,,可以得到時(shí)序分析的一些參數(shù):tsu(輸入建立時(shí)間)、tco(時(shí)鐘到輸出延時(shí)),、th(保持時(shí)間)分別為3.530 ns、13.174 ns,、0.751 ns,。基頻時(shí)鐘clk最大可以達(dá)到89.06 MHz,,而ISO/IEC 18000-6 Type B協(xié)議規(guī)定的基頻時(shí)鐘為40 kHz,。從分析本系統(tǒng)的時(shí)序結(jié)果顯示,完全符合協(xié)議要求,。具體的時(shí)序分析結(jié)果如圖8所示,。

    (2)功能分析
    功能分析以GROUP_SELECT_LT命令為例。 GROUP_SELECT_LT命令是多卡操作中的組選命令,,射頻卡接到此命令,,卡內(nèi)指定地址的數(shù)據(jù)與幀中提供的數(shù)據(jù)進(jìn)行對(duì)比。若卡內(nèi)數(shù)據(jù)較小,,則返回射頻卡的64 bit序列號(hào),,否則不作任何響應(yīng)。GROUP_SELECT_LT命令的命令號(hào)為03,,地址設(shè)為0F,,掩碼設(shè)為FF,64 bit數(shù)據(jù)全設(shè)為F,,所以從MCU傳給FPGA的命令數(shù)據(jù)為03_0F_FF_FFFF_FFFF_FFFF_FFFF,。原始數(shù)據(jù)經(jīng)過(guò)FPGA數(shù)字信號(hào)處理模塊處理后,就成了一幀基帶數(shù)據(jù)信號(hào),。驗(yàn)證平臺(tái)將讀卡器發(fā)來(lái)的數(shù)據(jù)幀進(jìn)行解碼,,然后判斷指令并返回射頻卡的64 bit序列號(hào),經(jīng)編碼后成一幀數(shù)據(jù)幀發(fā)送給讀卡器,。讀卡器收到此幀后即解碼,,并進(jìn)行CRC校驗(yàn),若都沒(méi)有錯(cuò),,則把解碼后的數(shù)據(jù)傳輸給MCU,。
    GROUP_SELECT_LT命令仿真波形圖如圖9所示,,實(shí)驗(yàn)證明可實(shí)現(xiàn)ISO/IEC 18000-6 Type B協(xié)議。
隨著RFID相關(guān)國(guó)際標(biāo)準(zhǔn)的確立(如ISO/IEC 18000)RFID的研發(fā)已成為國(guó)際性的課題,。在諸多RFID工作頻段中,,UHF頻段的RFID技術(shù)前景最為看好,也成為現(xiàn)今RFID技術(shù)領(lǐng)域研究的熱點(diǎn),。

參考文獻(xiàn)
[1] 周曉光,,王曉華.射頻識(shí)別(RFID)技術(shù)原理與應(yīng)用實(shí)例[M].北京:人民郵電出版社,2006.
[2] 倪榮生.超高頻RFID系統(tǒng)的發(fā)展和趨勢(shì)分析[J].中國(guó)防偽報(bào)道,,2007(11):41-47.
[3] 劉韜,,樓興華.FPGA數(shù)字電子系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)實(shí)例[M].北京:人民郵電出版社,2006.
[4] ISO/IEC JTC1/SC31/WG4N0722. ISO/IEC FDIS 18000-6:2003(E)[S]. Geneva: ISO copyright office,, 2003.
[5] 張迎新,,雷文,姚靜波.C8051F系列SOC單片機(jī)原理及應(yīng)用[M].北京:國(guó)防工業(yè)出版社,,2005.
[6] 范佳林.915MHz RFID閱讀器設(shè)計(jì)[D].大連:大連理工大學(xué),,2006.
[7] 陸永寧.非接觸IC卡原理與應(yīng)用[M].北京:電子工業(yè)出版社,2006:94-97.
[8] CILETTI M D. Verilog HDL高級(jí)數(shù)字設(shè)計(jì)[M].張雅綺,,李鏘,,等譯.北京:電子工業(yè)出版社,2005.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。