隨著計算機技術的迅速發展,電子信息技術越來越快地普及到各行各業的應用中去。傳統的物流信息采集工作方式是通過工作人員將票物進行核對,然后將票上的數據輸入到計算機中。這一過程費時費力,并且可能由于各種人為過失造成各種各樣錯誤數據的存在,影響所采集信息的可靠性。而自動識別技術利用計算機進行自動識別,增加了輸入的靈活性與準確性,使人們擺脫繁雜的統計識別工作,并且大大提高了物流信息采集的工作效率。目前,由沃爾瑪、麥德隆等大超市一手推動的RFID應用,為零售業帶來包括降低勞動力成本、商品的可視度提高,降低因商品斷貨造成的損失,減少商品偷竊現象等好處。其可應用的過程包括:商品的銷售數據實時統計,補貨,防盜等。本文利用RFID技術,用FPGA芯片與NRF905搭建了無線通信系統,成功的實現了無線收發數據。
1 系統設計
1.1 RFID簡介
RFID(Radio Frequency Identification,射頻識別技術)是利用無線電波對記錄媒體進行讀/寫。射頻識別的距離可達幾十厘米至幾米,且根據讀/寫的方式,可以輸入數千字節的信息,同時,還具有極高的保密性。射頻識別技術適用的領域:物料跟蹤、運載工具和貨架
識別等要求非接觸數據采集和交換的場合,要求頻繁改變數據內容的場合尤為適用。如香港的車輛自動識別系統駕易通,采用的主要技術就是射頻技術。射頻技術在其他物品的識別自動化管理方面也得到了較廣泛的應用。
如圖1所示即為本無線系統的整個構架,由控制模塊,SPI模塊以及天線模塊構成。其中對SPI模塊的配置由控制模塊通過Wishbone總線來完成,并且對天線模塊的配置,模式轉換,收發數據等操作均由控制模塊通過SPI總線來完成。下面將就各個部分進行說明。
1.2 天線模塊(NRF905收發模塊)
1.2.1 NRF905介紹
NRF905是挪威Nordic公司推出的單片射頻發射器芯片,工作電壓為1.9~3.6 V,32引腳QFN封裝,工作于433/868/915MHz三個ISM頻道。可以自動完成處理字頭和CRC(循環冗余碼校驗)的工作,可由片內硬件自動完成曼徹斯特編碼/解碼,使用SPI接口與微控制器通信,配置方便,功耗低,以-10 dBm的輸出功率發射時電流只有11 mA,在接收模式時電流為12.5 mA。
NRF905有ShockBurst接收與ShockBurst發送兩種工作模式;掉電和SPI編程與Standby和SPI編程兩種節電模式。其ShoekBurst工作模式的特點是自動產生前導碼和CRC,可以通過SPI接口進行編程配置。NRF905的工作模式由對TRX_CE,TX_EN,PWR_UP的設置來設置,見表1。
1.2.2 NRF905配置與工作過程
nRF905的所有配置都通過SPI接口進行。SPI接口由5個寄存器組成,一條SPI指令用來決定進行什么操作。SPI接口只有在掉電模式和Standby"模式是激活的。
其中SPI接口的5個寄存器分別為:
(1)狀態寄存器:寄存器包含數據就緒DR和地址匹配AM狀態。
(2)RF配置寄存器:寄存器包含收發器的頻率、輸出功率等配置信息。
(3)發送地址:寄存器包含目標器件地址,字節長度由配置寄存器設置。
(4)發送有效數據:寄存器包含發送的有效Shock Burst數據包數據,字節長度由配置寄存器設置。
(5)接收有效數據:寄存器包含接收到的有效ShockBurst數據包數據,字節長度由配置寄存器設置。在寄存器中的有效數據由數據準備就緒DR指示。
ShoekBurst技術使nRF905能夠提供高速的數據傳輸,而不需要高速控制器來進行數據處理或時鐘覆蓋。通過將與RF協議有關的高速信號處理放到芯片內,nRF905提供給應用控制器一個SPI接口,速率由微控制器自己設定的接口速度決定。nRF905通過ShockBurst工作模式在RF以最大速率進行連接時降低數字應用部分的速度來降低在應用中的平均電流消耗。在ShockBurst RX(接收)模式中,地址匹配AM和數據準備就緒DR信號通知控制器一個有效的地址和數據包已經各自接收完成。在ShockBurst TX(發送)模式中,nRF905自動產生前導碼和CRC校驗碼,數據準備就緒DR信號通知控制器數據傳輸已經完成。
1.3 SPI模塊
1.3.1 SPI總線介紹
SPI(Serial Parallel Bus)總線是Motorola公司提出的一個同步串行外設接口,容許CPU與各種外圍接口器件,以串行方式進行通信。它使用4條線:串行時鐘線(SCK)、主機輸入/從機輸出線(MISO)、主機輸出/從機輸入線(MOSI)、低電平有效的使能信號線(SS)。這樣,僅需3~4根數據線和控制線即可擴展具有SPI接口的各種I/0器件。
SPI總線模式的數據是以字節為單位進行傳輸的(一次傳輸可以傳多個字節),每字節為8位,每個命令或者數據塊都是字節對齊的(8個時鐘的整數倍)。數據按位傳輸,高位在前,地位在后,為全雙工通信,數據傳輸速度總體來說比I2C總線要快,速度可達到每秒幾兆比特。SPI接口是以主從方式工作的,這種模式通常有一個主器件和一個或多個從器件。在本文設計的無線通信系統中,由FPGA實現的SPI總線接口模塊為主機,NRF905的SPI模塊為從機。
SPI時序模式的選擇:
SPI接口有4種不同的數據傳輸時序,取CPOL和CPHL這兩位的組合。CPOL是用來決定SCK時鐘信號空閑時的電平;CPOL=O,空閑電平為低電平,CPOL=1時,空閑電平為高電平。CPHA是用來決定采樣時刻的,CPHA=0,在每個周期的第一個時鐘沿采樣;CPHA=1,在每個周期的第二個時鐘沿采樣。
圖2為NRF905的SPI接口的時序圖,由此本文設計的SPI工作模式是在CPOL=O,CPHA=O這種時序下。
1.3.2 SPI硬件設計
圖3是本文無線通信系統中SPI模塊的結構圖,該系統中的SPI主要由時鐘生成模塊,SPI寄存器組,SPI功能配置的模塊組成,并且通過Wishbone總線與控制器相連,具體設計如下:
時鐘生成模塊:由于SPI模塊是基于FPGA來實現的,而FPGA外部提供的時鐘較快(50 MHz或100 MHz),不適合與NRF905的SPI接口進行通信(1 Hz~10 MHz),所以需要分頻來使時鐘慢下來。但是至于幾分頻是由SPI功能配置模塊來完成的。其次由于SPI協議指出數據可在上升沿或下降沿觸發,所以還需要對時鐘的上升沿或下降沿進行鑒別(也稱抓沿程序),這個功能也由這個模塊完成。
SPI寄存器模塊:這個模塊實現的是一個由16個8位寄存器組成的128位的寄存器組,也就是說通過SPI接口一次性可收發8~128位的串行數據。具體操作由SPI功能配置模塊來完成。
SPI功能配置模塊:這個模塊相當于一個SPI控制器,通過對其寄存器的配置來決定時鐘的分頻數,收發數據位數,時鐘上升沿或下降沿傳輸數據等,而對這些寄存器的配置是由控制模塊完成的。下面就配置寄存器做一些簡要說明。
首先介紹控制寄存器:
控制寄存器第O位go:是否開始發送。
控制寄存器第1位rx_negedge:接收數據是下降沿還是上升沿。
控制寄存器第2位tx_negedge:發送數據是下降沿還是上升沿。
控制寄存器第3~9位char_len:發送數據的位數(因為SPI是全雙工的,所以這實際上也是接收數據的位數)。
控制寄存器第10位lsb:是從高位發送還是地位發送。
控制寄存器第11位ie:讀寫完成之后是否發送中斷信號。
控制寄存器第12位ass:是否自動產生片選信號。
分頻寄存器:spi_divider_sel。
狀態寄存器:spi_ctrl_sel。
數據寄存器O:spi_tx_sel[0]。
數據寄存器1:spi_tx_sel[1]。
數據寄存器2:spi_tx_sel[2]。
數據寄存器3:spi_tx_sel[3]。
片選信號寄存器:spi_ss_sel。
1.4 控制模塊
對于控制模塊來說,其實現方法是利用基于Verilog語言的有限狀態機來實現,相當于一條一條的指令來控制SPI模塊接收發送數據。控制模塊分成三個獨立的部分即接收控制模塊、發送控制模塊及NRF905配置模塊。其中接收與發送控制模塊分別包含對SPI進行配置的狀態。下面對接收控制模塊的設計進行說明。圖4即為Debussy綜合出的狀態機轉換圖。
為了完成無線通訊而設計的狀態較多,比較復雜,故只對比較重要的狀態做些簡要說明。idle空閑狀態,完成對端口進行初始化寄存器清零;config_div狀態,對時鐘進行分頻(定義sclk);configwb_in狀態,定義傳輸數據的位數以及是上升沿收發還是下降沿收發,wb_inl,wb_in2,wb_in3,wb_in4,這四個狀態就是通過Wishbone總線接口對SPI配置要寫的數(每一個狀態對應一個寄存器);configspi_out狀態,開始傳送數據;done狀態,片選置高數據傳送完成;readeonfigreg_prel狀態,設定發送數據位數;readconfigreg(讀寄存器控制字位數)狀態,通過Wishbone總線接口對SPI配置讀命令字;readconfigreg_out狀態,設定發送/接收數據位;alldone狀態,片選置高完成配置數據讀取的過程。
該設計考慮到驗證配置過程的正確性,故特意設定了讀寄存器配置數據的狀態,ehangemode就是接收狀態,當接收完成后(DR=1)進入eh-angmodee狀態,把收到的數據讀出來。然后再回到readeonfigreg_prel狀態,等待新的傳輸數據。
2 系統驗證
該設計最后進行了板級驗證,FPGA開發板與NRF905的PCB板構成這個驗證系統。FPGA芯片的采用Xilinx公司的XC2V1000,所用的綜合工具是Synplify,前仿真與后仿真用來查看波形的工具是Modelsim,所用到的布局布線工具與下載工具是ISE10.1集成的iMPACT,而板級測試用來查看波形的工具是Chipseope。
在下載之前對本設計進行了充足的功能仿真,用Verilog編寫了SPI從機模仿NRF905的SPI接口與SPI主機進行通信,確保能夠完成預先設定的功能。
下載是將配置文件下載到具體的FPGA芯片中。本文系統中采用的是JTAG下載方式,下載工具使用Xilinx ISE的集成工具iMPACT。在下載之前進行了管腳綁定其目的就在于能夠將設計的輸入/輸出端口約束在FPGA芯片的合適的引腳上,以方便對其進行分析和調試并與外界I/O進行相連。下面即為本設計中相應的管腳約束文件中的相關內容。
下載完成后,依照管腳綁定將FPGA開發板與NRF905的PCB相連,圖5即為無線收發的PCB連接圖。
這只是其中一端,在這里假定為接收端,那么另外還有一樣的互連PCB板作為發送端。右邊的PCB板為FPGA用來實現SPI模塊與控制模塊。左上倒凸字形的小PCB板即為NRF905,左邊的PCB板起到了連接FPGA與NRF905的左右,并給NRF905提供電源。
系統建立起來后,下一步是最終的板級驗證。圖6為用Chipscope得到的波形圖。mosi與miso分別是發送端與接收端SPI總線上的信號。從圖中可以看出數據基本吻合,由此表明設計的以FPGA控制NRF905的無線通信系統能夠正常工作。
3 結語
本文實現了以FPGA控制NRF905的無線通信系統,通過對系統的建立與仿真測試以及板級驗證,證明了無線通信系統能夠正常工作,而且無線系統通信距離可達100 m,基本完成了無線系統通信的要求,充分說明該設計系統的實用性。
評論
查看更多