一款基于FPGA的RFID閱讀器設計
引言
RFID技術是從20世紀80年代走向成熟的一項自動識別技術,近年來發(fā)展十分迅速。目前,在全世界,基于RFID技術的電子標簽,使用已經非常廣泛了,這主要取決于它的特性,RFID標簽可以使用在幾乎所有的物理對象上。RFID技術在工業(yè)自動化,物體跟蹤,交通運輸控制管理,防偽校園卡,電子錢包,行李標簽,收費系統(tǒng),醫(yī)用裝置,電子物品的監(jiān)控和軍事用途等方面已經得到了廣泛的應用。例如第二代居民身份證,使用基于ISO/IEC4443-B標準的13.56MHz電子標簽,該項目可以說國內乃至國際上最大的RFID應用的項目之一。
RFID系統(tǒng)由閱讀器(Reader),電子標簽(Tag)和后臺數(shù)據(jù)庫組成,見圖1。閱讀器從附著在物品上的Tag中讀取數(shù)據(jù),這些數(shù)據(jù)在閱讀器或送給后臺的數(shù)據(jù)庫應用程序進行處理。閱讀器作為RFID系統(tǒng)中的關鍵部件通過天線與電子標簽進行無線通信,可以實現(xiàn)對標簽識別碼和內存數(shù)據(jù)的讀出或寫入操作。
圖1RFID系統(tǒng)構成。
FPGA具有開發(fā)簡單,靜態(tài)可重復編程和動態(tài)在系統(tǒng)編程的特點,已經成為當今應用最廣泛的可編程專用集成電路。目前在FPGA的集成開發(fā)環(huán)境中提供各種I/O接口的IP核,方便實現(xiàn)各種I/O接口。
現(xiàn)有的RFID閱讀器一般是由ARM(AdvancedRISCMachines)結構體系實現(xiàn)的,一般體積較大,不容易升級。本文研究和實現(xiàn)了基于FPGA的閱讀器,這種閱讀器具有結構靈活、體積小、升級容易、方便實現(xiàn)不同的外設接口等優(yōu)點。
論文結構如下第一部分描述閱讀器的總體結構,第二部分是硬件部分結構,第三部分是軟件部分結構,第四部分是閱讀器的實現(xiàn)。
1基于FPGA的RFID閱讀器總體結構
閱讀器是由FPGA、射頻模塊、LCD和FLASH構成的,閱讀器的系統(tǒng)結構見圖2。標準串口向射頻模塊發(fā)送對標簽操作的命令,用于接收從射頻模塊返回的標簽中的內容,LCD顯示標簽信息,系統(tǒng)控制程序是系統(tǒng)的核心程序,它協(xié)調各部分的運行,F(xiàn)LASH存儲器存放數(shù)據(jù)。
圖2閱讀器的系統(tǒng)結構
FPGA實現(xiàn)的外部接口有:串口、LCD接口、FLASH接口和鍵盤接口等,射頻模塊內部含有符合RFID標準的標簽操作程序,能夠執(zhí)行來自串口的操作標簽的命令,返回標簽的信息。
2閱讀器的硬件部分結構
閱讀器是以FPGA為核心,控制數(shù)據(jù)處理交換的模塊結構。FPGA實現(xiàn)的模塊有:各個外設接口和CPU模塊,這些模塊由該FPGA內部的可編程邏輯電路實現(xiàn)的,它完成與射頻模塊的通信,射頻模塊前端與標簽的空中接口通信讀取標簽信息,F(xiàn)PGA從串口模塊取回標簽信息送LCD顯示,硬件結構如圖3。
圖3閱讀器的硬件結構。
3閱讀器軟件部分結構
程序的執(zhí)行從鍵盤的觸發(fā)開始,此時通過串口向射頻模塊發(fā)送讀標簽命令,射頻模塊返回標簽的信息,觸發(fā)串口中斷服務程序執(zhí)行,將讀出的信息放入FIFO對列,將結果送LCD顯示。軟件部分程序執(zhí)行流程圖見圖4。
圖4軟件部分程序執(zhí)行流程。
4閱讀器的實現(xiàn)
本文使用日立產射頻模塊、2.4GHz電子標簽、XilinxSpartan-3LC1500開發(fā)板、XilinxPlatformStudio7.1i集成開發(fā)環(huán)境和XilinxISE7.1i集成開發(fā)環(huán)境硬件連接見圖5。FPGA開發(fā)板設計一個串口連接射頻模塊,用于向射頻模塊發(fā)送標簽操作命令和接收標簽的信息。圖中URAT為設計的串口,G16和H16為FPGA的I/O引腳,74LS04為電平轉換模塊。1602為液晶顯示模塊。
圖5硬件連接。
4.1FPGA中的CPU模塊
嵌入式CPU的設計是SOC設計的核心。FPGA可以方便地實現(xiàn)嵌入式CPU核[6],在FPGA器件中嵌入式CPU有硬核和軟核兩種,如Xilinx的VirtexII器件中含有CPU硬核POWERPC401核,Altera的Excalibur器件中含有PowerTrace核;軟核如Xilinx的PicoBlaze和MicroBlaze,Altera的Nios,Tensilica的Xtensa和OpenCores的OpenRISC軟核。硬核提供了豐富的指令和功能,但不能改變其電路結構。硬核具有高速和高效的優(yōu)點,但熟悉和充分掌握硬核的使用比較困難,硬核并不是所有的FPGA器件都有的。而軟核是用VHDL語言設計實現(xiàn),設計者可以根據(jù)具體需要進行設計或對軟核進行適當?shù)男薷?,適當增加或減少硬件電路,如寄存器數(shù)量,RAM容量和總線寬度等,,提高芯片利用率,,還可以提高CPU運行速度,并且軟核還具有使用靈活和低成本的特點。本文使用的是Microblaze軟核。
4.2實現(xiàn)過程
在集成開發(fā)環(huán)境中添加LCD、URAT和DIP的軟件IP核,其中DIP用于模擬鍵盤輸入。然后配置各個接口IP核的總線類型、地址范圍和外部端口,在項目的UCF文件中配置接口IP核的引腳和FGPA的I/O的連接關系。
從串口接收數(shù)據(jù)有兩種方法:一種是采用定時器讀;另一種采用串口的中斷服務程序來讀。采用定時器消耗資源比較大,本文采用串口中斷的方法,當串口有數(shù)據(jù)到達時,激活串口中斷服務程序,在中斷服務程序中讀出串口緩沖區(qū)的數(shù)據(jù),然后寫道FIFO對列。
URAT中斷服務程序的主要代碼如下:
VoidXUartLite_InterruptHandler(XUartLite*
InstancePtr)
/*判斷Uart緩沖區(qū)是否為空*/
if(!XUartLite_mIsReceiveEmpty(RS232_BASEADD
R))
{
/*接收URAT數(shù)據(jù)*/
Data=XUartLite_RecvByte(RS232_BASEADDR);//
/*寫入FIFO緩沖隊列*/
Add_Queue(Data);
}
其中FIFO緩沖隊列是由一個自定義的數(shù)據(jù)結構和對它的操作實現(xiàn)的。
下面是主程序的主要代碼。
初始化部分
/*URAT初始化*/
XUartLite_Initialize(&Uart,
XPAR_RS232_DEVICE_ID)
/*LCD初始化*/
voidlcd_init(unsignedintbase_addr)
/*URAT開中斷*/
voidXUartLite_EnableInterrupt(XUartLite*
InstancePtr)
/*設置URAT初始化*/
voidXUartLite_SetSendHandler(XUartLite
*InstancePtr,XUartLite_HandlerFuncPtr,void
*CallBackRef)
/*設置URAT的中斷服務程序*/
voidXUartLite_SetRecvHandler(XUartLite*
InstancePtr,,XUartLite_Handler
XUartLite_InterruptHandle,void*CallBackRef)
初始化完成以后,然后進入一個無限循環(huán)。
/*判斷是否有鍵按下*/
XGpio_InterruptGetStatus(XGpio*InstancePtr)
/*發(fā)送讀標簽命令*/
for(j=0;j
{XUartLite_SendByte(UARTLITE_0_BASEA
DDR,*(commanda+j));
wait(50000);
}
/*如果對列不為空*/
If(!IsEmptyQuque())
/*讀取隊列數(shù)據(jù)*/
Read_Quque(data)
/*寫入FLASH*/
voidflash_write(Xuint32addr,longdata)
對FLASH的操作首先要塊檫除,然后才能寫,對FLASH寫的代碼如下:
voidflash_write(Xuint32addr,longdata)
{XIo_Out32(flash_base_addr+(0x555<<2),
0x00aa00aa);
XIo_Out32(flash_base_addr+(0xaaa<<2),
0x00550055);
XIo_Out32(flash_base_addr+(0x555<<2),
0x00a000a0);
XIo_Out32(addr,data);
return;
}
程序編寫完成后,經過編譯和消除錯誤后,下載到目標板,在FPGA開發(fā)板運行程序,在LCD得到標簽信息,見圖6。
圖6標簽信息在LCD的顯示
5結論
RFID技術是近年來發(fā)展起來的一種新型的自動識別技術。FPGA技術是未來硬件廣泛使用的一種技術,本文結合將RFID技術與FPGA技術相結合,研究和實現(xiàn)了一種新結構的閱讀器,基于FPGA的閱讀器具有結構靈活、體積小、升級容易和易擴展等優(yōu)點。本文給出了閱讀器的總體結構、硬件部分結構和軟件部分結構,研究了RFID射頻模塊與FPGA之間的接口實現(xiàn)及標簽信息在LCD顯示。具有廣泛的使用價值。