《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 一種基于FPGA的RFID無線通信系統(tǒng)的實(shí)現(xiàn)
一種基于FPGA的RFID無線通信系統(tǒng)的實(shí)現(xiàn)
現(xiàn)代電子技術(shù)
周毅 朱超 吳武臣 侯立剛 耿淑琴
摘要: 隨著計算機(jī)技術(shù)的迅速發(fā)展,,電子信息技術(shù)越來越快地普及到各行各業(yè)的應(yīng)用中去,。傳統(tǒng)的物流信息采集工作方...
關(guān)鍵詞: FPGA RFID 無線通信
Abstract:
Key words :

關(guān)鍵字:RFID" title="RFID">RFID 無線通信" title="無線通信">無線通信 FPGA" title="FPGA">FPGA

  隨著計算機(jī)技術(shù)的迅速發(fā)展,電子信息技術(shù)越來越快地普及到各行各業(yè)的應(yīng)用中去,。傳統(tǒng)的物流信息采集工作方式是通過工作人員將票物進(jìn)行核對,,然后將票上的數(shù)據(jù)輸入到計算機(jī)中。這一過程費(fèi)時費(fèi)力,,并且可能由于各種人為過失造成各種各樣錯誤數(shù)據(jù)的存在,,影響所采集信息的可靠性。而自動識別技術(shù)利用計算機(jī)進(jìn)行自動識別,,增加了輸入的靈活性與準(zhǔn)確性,,使人們擺脫繁雜的統(tǒng)計識別工作,并且大大提高了物流信息采集的工作效率,。目前,,由沃爾瑪、麥德隆等大超市一手推動的RFID應(yīng)用,,為零售業(yè)帶來包括降低勞動力成本,、商品的可視度提高,降低因商品斷貨造成的損失,,減少商品偷竊現(xiàn)象等好處,。其可應(yīng)用的過程包括:商品的銷售數(shù)據(jù)實(shí)時統(tǒng)計,補(bǔ)貨,,防盜等,。本文利用RFID技術(shù),用FPGA芯片與NRF905搭建了無線通信系統(tǒng),,成功的實(shí)現(xiàn)了無線收發(fā)數(shù)據(jù),。

  1 系統(tǒng)設(shè)計

  1.1 RFID簡介

  RFID(Radio Frequency Identification,射頻識別技術(shù))是利用無線電波對記錄媒體進(jìn)行讀/寫,。射頻識別的距離可達(dá)幾十厘米至幾米,,且根據(jù)讀/寫的方式,可以輸入數(shù)千字節(jié)的信息,,同時,,還具有極高的保密性。射頻識別技術(shù)適用的領(lǐng)域:物料跟蹤,、運(yùn)載工具和貨架識別等要求非接觸數(shù)據(jù)采集和交換的場合,,要求頻繁改變數(shù)據(jù)內(nèi)容的場合尤為適用,。如香港的車輛自動識別系統(tǒng)駕易通,采用的主要技術(shù)就是射頻技術(shù),。射頻技術(shù)在其他物品的識別自動化管理方面也得到了較廣泛的應(yīng)用,。

  如圖1所示即為本無線系統(tǒng)的整個構(gòu)架,由控制模塊,,SPI模塊以及天線模塊構(gòu)成,。其中對SPI模塊的配置由控制模塊通過Wishbone總線來完成,并且對天線模塊的配置,,模式轉(zhuǎn)換,,收發(fā)數(shù)據(jù)等操作均由控制模塊通過SPI總線來完成。下面將就各個部分進(jìn)行說明,。

本無線系統(tǒng)的整個構(gòu)架

  1.2 天線模塊(NRF905收發(fā)模塊)

  1.2.1 NRF905介紹

  NRF905是挪威Nordic公司推出的單片射頻發(fā)射器芯片,,工作電壓為1.9~3.6 V,32引腳QFN封裝,,工作于433/868/915MHz三個ISM頻道,。可以自動完成處理字頭和CRC(循環(huán)冗余碼校驗(yàn))的工作,,可由片內(nèi)硬件自動完成曼徹斯特編碼/解碼,,使用SPI接口與微控制器通信,配置方便,,功耗低,,以-10 dBm的輸出功率發(fā)射時電流只有11 mA,在接收模式時電流為12.5 mA,。

  NRF905有ShockBurst接收與ShockBurst發(fā)送兩種工作模式,;掉電和SPI編程與Standby和SPI編程兩種節(jié)電模式。其ShoekBurst工作模式的特點(diǎn)是自動產(chǎn)生前導(dǎo)碼和CRC,,可以通過SPI接口進(jìn)行編程配置,。NRF905的工作模式由對TRX_CE,TX_EN,,PWR_UP的設(shè)置來設(shè)置,,見表1。

NRF905的工作模式

關(guān)鍵字:RFID 無線通信 FPGA

 

  1.2.2 NRF905配置與工作過程

  nRF905的所有配置都通過SPI接口進(jìn)行,。SPI接口由5個寄存器組成,,一條SPI指令用來決定進(jìn)行什么操作。SPI接口只有在掉電模式和Standby"模式是激活的,。

  其中SPI接口的5個寄存器分別為:

  (1)狀態(tài)寄存器:寄存器包含數(shù)據(jù)就緒DR和地址匹配AM狀態(tài),。

  (2)RF配置寄存器:寄存器包含收發(fā)器的頻率、輸出功率等配置信息,。

  (3)發(fā)送地址:寄存器包含目標(biāo)器件地址,,字節(jié)長度由配置寄存器設(shè)置,。

  (4)發(fā)送有效數(shù)據(jù):寄存器包含發(fā)送的有效Shock Burst數(shù)據(jù)包數(shù)據(jù),字節(jié)長度由配置寄存器設(shè)置,。

  (5)接收有效數(shù)據(jù):寄存器包含接收到的有效ShockBurst數(shù)據(jù)包數(shù)據(jù),,字節(jié)長度由配置寄存器設(shè)置。在寄存器中的有效數(shù)據(jù)由數(shù)據(jù)準(zhǔn)備就緒DR指示,。

  ShoekBurst技術(shù)使nRF905能夠提供高速的數(shù)據(jù)傳輸,而不需要高速控制器來進(jìn)行數(shù)據(jù)處理或時鐘覆蓋,。通過將與RF協(xié)議有關(guān)的高速信號處理放到芯片內(nèi),,nRF905提供給應(yīng)用控制器一個SPI接口,速率由微控制器自己設(shè)定的接口速度決定,。nRF905通過ShockBurst工作模式在RF以最大速率進(jìn)行連接時降低數(shù)字應(yīng)用部分的速度來降低在應(yīng)用中的平均電流消耗,。在ShockBurst RX(接收)模式中,地址匹配AM和數(shù)據(jù)準(zhǔn)備就緒DR信號通知控制器一個有效的地址和數(shù)據(jù)包已經(jīng)各自接收完成,。在ShockBurst TX(發(fā)送)模式中,,nRF905自動產(chǎn)生前導(dǎo)碼和CRC校驗(yàn)碼,數(shù)據(jù)準(zhǔn)備就緒DR信號通知控制器數(shù)據(jù)傳輸已經(jīng)完成,。

  1.3 SPI模塊

  1.3.1 SPI總線介紹

  SPI(Serial Parallel Bus)總線是Motorola公司提出的一個同步串行外設(shè)接口,,容許CPU與各種外圍接口器件,以串行方式進(jìn)行通信,。它使用4條線:串行時鐘線(SCK),、主機(jī)輸入/從機(jī)輸出線(MISO)、主機(jī)輸出/從機(jī)輸入線(MOSI),、低電平有效的使能信號線(SS),。這樣,僅需3~4根數(shù)據(jù)線和控制線即可擴(kuò)展具有SPI接口的各種I/0器件,。

 

  SPI總線模式的數(shù)據(jù)是以字節(jié)為單位進(jìn)行傳輸?shù)?一次傳輸可以傳多個字節(jié)),,每字節(jié)為8位,每個命令或者數(shù)據(jù)塊都是字節(jié)對齊的(8個時鐘的整數(shù)倍),。數(shù)據(jù)按位傳輸,,高位在前,地位在后,,為全雙工通信,,數(shù)據(jù)傳輸速度總體來說比I2C總線要快,速度可達(dá)到每秒幾兆比特,。SPI接口是以主從方式工作的,,這種模式通常有一個主器件和一個或多個從器件。在本文設(shè)計的無線通信系統(tǒng)中,,由FPGA實(shí)現(xiàn)的SPI總線接口模塊為主機(jī),,NRF905的SPI模塊為從機(jī),。

  SPI時序模式的選擇:

  SPI接口有4種不同的數(shù)據(jù)傳輸時序,取CPOL和CPHL這兩位的組合,。CPOL是用來決定SCK時鐘信號空閑時的電平,;CPOL=O,空閑電平為低電平,,CPOL=1時,,空閑電平為高電平。CPHA是用來決定采樣時刻的,,CPHA=0,,在每個周期的第一個時鐘沿采樣;CPHA=1,,在每個周期的第二個時鐘沿采樣,。

  圖2為NRF905的SPI接口的時序圖,由此本文設(shè)計的SPI工作模式是在CPOL=O,,CPHA=O這種時序下,。

NRF905的SPI接口的時序圖

關(guān)鍵字:RFID 無線通信 FPGA

 

  1.3.2 SPI硬件設(shè)計

  圖3是本文無線通信系統(tǒng)中SPI模塊的結(jié)構(gòu)圖,該系統(tǒng)中的SPI主要由時鐘生成模塊,,SPI寄存器組,,SPI功能配置的模塊組成,并且通過Wishbone總線與控制器相連,,具體設(shè)計如下:

  時鐘生成模塊:由于SPI模塊是基于FPGA來實(shí)現(xiàn)的,,而FPGA外部提供的時鐘較快(50 MHz或100 MHz),不適合與NRF905的SPI接口進(jìn)行通信(1 Hz~10 MHz),,所以需要分頻來使時鐘慢下來,。但是至于幾分頻是由SPI功能配置模塊來完成的。其次由于SPI協(xié)議指出數(shù)據(jù)可在上升沿或下降沿觸發(fā),,所以還需要對時鐘的上升沿或下降沿進(jìn)行鑒別(也稱抓沿程序),,這個功能也由這個模塊完成。

本文無線通信系統(tǒng)中SPI模塊的結(jié)構(gòu)圖

  SPI寄存器模塊:這個模塊實(shí)現(xiàn)的是一個由16個8位寄存器組成的128位的寄存器組,,也就是說通過SPI接口一次性可收發(fā)8~128位的串行數(shù)據(jù),。具體操作由SPI功能配置模塊來完成。

  SPI功能配置模塊:這個模塊相當(dāng)于一個SPI控制器,,通過對其寄存器的配置來決定時鐘的分頻數(shù),,收發(fā)數(shù)據(jù)位數(shù),時鐘上升沿或下降沿傳輸數(shù)據(jù)等,,而對這些寄存器的配置是由控制模塊完成的,。下面就配置寄存器做一些簡要說明。

  首先介紹控制寄存器:

  •   控制寄存器第O位go:是否開始發(fā)送。
  •   控制寄存器第1位rx_negedge:接收數(shù)據(jù)是下降沿還是上升沿,。
  •   控制寄存器第2位tx_negedge:發(fā)送數(shù)據(jù)是下降沿還是上升沿,。
  •   控制寄存器第3~9位char_len:發(fā)送數(shù)據(jù)的位數(shù)(因?yàn)镾PI是全雙工的,所以這實(shí)際上也是接收數(shù)據(jù)的位數(shù)),。
  •   控制寄存器第10位lsb:是從高位發(fā)送還是地位發(fā)送,。
  •   控制寄存器第11位ie:讀寫完成之后是否發(fā)送中斷信號。
  •   控制寄存器第12位ass:是否自動產(chǎn)生片選信號,。
  •   分頻寄存器:spi_divider_sel,。
  •   狀態(tài)寄存器:spi_ctrl_sel。
  •   數(shù)據(jù)寄存器O:spi_tx_sel[0],。
  •   數(shù)據(jù)寄存器1:spi_tx_sel[1],。
  •   數(shù)據(jù)寄存器2:spi_tx_sel[2]。
  •   數(shù)據(jù)寄存器3:spi_tx_sel[3],。
  •   片選信號寄存器:spi_ss_sel。

關(guān)鍵字:RFID 無線通信 FPGA

  1.4 控制模塊

  對于控制模塊來說,,其實(shí)現(xiàn)方法是利用基于Verilog語言的有限狀態(tài)機(jī)來實(shí)現(xiàn),,相當(dāng)于一條一條的指令來控制SPI模塊接收發(fā)送數(shù)據(jù)??刂颇K分成三個獨(dú)立的部分即接收控制模塊,、發(fā)送控制模塊及NRF905配置模塊。其中接收與發(fā)送控制模塊分別包含對SPI進(jìn)行配置的狀態(tài),。下面對接收控制模塊的設(shè)計進(jìn)行說明,。圖4即為Debussy綜合出的狀態(tài)機(jī)轉(zhuǎn)換圖。

Debussy綜合出的狀態(tài)機(jī)轉(zhuǎn)換圖

  為了完成無線通訊而設(shè)計的狀態(tài)較多,,比較復(fù)雜,,故只對比較重要的狀態(tài)做些簡要說明。idle空閑狀態(tài),,完成對端口進(jìn)行初始化寄存器清零,;config_div狀態(tài),對時鐘進(jìn)行分頻(定義sclk),;configwb_in狀態(tài),,定義傳輸數(shù)據(jù)的位數(shù)以及是上升沿收發(fā)還是下降沿收發(fā),wb_inl,,wb_in2,,wb_in3,wb_in4,,這四個狀態(tài)就是通過Wishbone總線接口對SPI配置要寫的數(shù)(每一個狀態(tài)對應(yīng)一個寄存器),;configspi_out狀態(tài),開始傳送數(shù)據(jù);done狀態(tài),,片選置高數(shù)據(jù)傳送完成,;readeonfigreg_prel狀態(tài),設(shè)定發(fā)送數(shù)據(jù)位數(shù),;readconfigreg(讀寄存器控制字位數(shù))狀態(tài),,通過Wishbone總線接口對SPI配置讀命令字;readconfigreg_out狀態(tài),,設(shè)定發(fā)送/接收數(shù)據(jù)位,;alldone狀態(tài),片選置高完成配置數(shù)據(jù)讀取的過程,。

 

  該設(shè)計考慮到驗(yàn)證配置過程的正確性,,故特意設(shè)定了讀寄存器配置數(shù)據(jù)的狀態(tài),ehangemode就是接收狀態(tài),,當(dāng)接收完成后(DR=1)進(jìn)入eh-angmodee狀態(tài),,把收到的數(shù)據(jù)讀出來。然后再回到readeonfigreg_prel狀態(tài),,等待新的傳輸數(shù)據(jù),。

  2 系統(tǒng)驗(yàn)證

  該設(shè)計最后進(jìn)行了板級驗(yàn)證,F(xiàn)PGA開發(fā)板與NRF905的PCB板構(gòu)成這個驗(yàn)證系統(tǒng),。FPGA芯片的采用Xilinx公司的XC2V1000,,所用的綜合工具是Synplify,前仿真與后仿真用來查看波形的工具是Modelsim,,所用到的布局布線工具與下載工具是ISE10.1集成的iMPACT,,而板級測試用來查看波形的工具是Chipseope。

  在下載之前對本設(shè)計進(jìn)行了充足的功能仿真,,用Verilog編寫了SPI從機(jī)模仿NRF905的SPI接口與SPI主機(jī)進(jìn)行通信,,確保能夠完成預(yù)先設(shè)定的功能。

  下載是將配置文件下載到具體的FPGA芯片中,。本文系統(tǒng)中采用的是JTAG下載方式,,下載工具使用Xilinx ISE的集成工具iMPACT。在下載之前進(jìn)行了管腳綁定其目的就在于能夠?qū)⒃O(shè)計的輸入/輸出端口約束在FPGA芯片的合適的引腳上,,以方便對其進(jìn)行分析和調(diào)試并與外界I/O進(jìn)行相連,。下面即為本設(shè)計中相應(yīng)的管腳約束文件中的相關(guān)內(nèi)容。

程序

關(guān)鍵字:RFID 無線通信 FPGA

 

  下載完成后,,依照管腳綁定將FPGA開發(fā)板與NRF905的PCB相連,,圖5即為無線收發(fā)的PCB連接圖。

無線收發(fā)的PCB連接圖

  這只是其中一端,,在這里假定為接收端,,那么另外還有一樣的互連PCB板作為發(fā)送端,。右邊的PCB板為FPGA用來實(shí)現(xiàn)SPI模塊與控制模塊。左上倒凸字形的小PCB板即為NRF905,,左邊的PCB板起到了連接FPGA與NRF905的左右,,并給NRF905提供電源。

  系統(tǒng)建立起來后,,下一步是最終的板級驗(yàn)證,。圖6為用Chipscope得到的波形圖。mosi與miso分別是發(fā)送端與接收端SPI總線上的信號,。從圖中可以看出數(shù)據(jù)基本吻合,,由此表明設(shè)計的以FPGA控制NRF905的無線通信系統(tǒng)能夠正常工作。

用Chipscope得到的波形圖

  3 結(jié)語

  本文實(shí)現(xiàn)了以FPGA控制NRF905的無線通信系統(tǒng),,通過對系統(tǒng)的建立與仿真測試以及板級驗(yàn)證,,證明了無線通信系統(tǒng)能夠正常工作,而且無線系統(tǒng)通信距離可達(dá)100 m,,基本完成了無線系統(tǒng)通信的要求,,充分說明該設(shè)計系統(tǒng)的實(shí)用性。

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