《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > RF905無線通信IP軟核的優(yōu)化設計
RF905無線通信IP軟核的優(yōu)化設計
來源:電子技術應用2012年第6期
袁慧梅,楊均友
首都師范大學 信息工程學院,北京100048
摘要: 利用DMA數(shù)據(jù)傳輸方式的特點,設計了一種基于DMA方式的RF905無線通信IP軟核。該IP軟核基于AVALON總線,其控制和運算邏輯由一片F(xiàn)PGA芯片完成,適合應用于NIOSII嵌入式系統(tǒng)。測試與驗證表明,該IP軟核在傳輸數(shù)據(jù)時大大降低了CPU的占用時間,提高了嵌入式系統(tǒng)的性能并且占用較少資源,與一般的IP硬核相比,速度快,成本低,靈活性好,可移植性強,從而更能滿足短距離無線通信的要求。該IP軟核已應用于某無線電力參數(shù)監(jiān)測系統(tǒng)中。
中圖分類號: TP393
文獻標識碼: A
文章編號: 0258-7998(2012)06-0020-04
Optimized design of IP soft core of RF905
Yuan Huimei,Yang Junyou
College of Information Engineering, Capital Normal University, Beijing 100048,China
Abstract: Using the characteristic of DMA, an improving IP core of RF905 is proposed. The IP core is based on AVALON bus. Its control and arithmetic logic are completed on one FPGA chip so that it can be suited to NIOSII embedded system. It is proved that the IP core can reduce elapsed time of CPU greatly in data transmission process, so that the performance of NIOSII system can be improved in condition of less logical resources. The IP core is high speed, simply used, low cost, high flexibility and high portability. The IP core is tested and verified in a wireless electrical parameter monitoring system.
Key words : NIOSII;wireless communication;IP;DMA;AVALON bus

    目前無線通信基本上都是利用單片機或者ARM片內的無線通信 IP硬核實現(xiàn),如TI公司的片內集成2.4 GHz的ZigBee無線收發(fā)模塊的CC2430單片機核、LINKUP System公司的帶藍牙無線收發(fā)器的L7205 ARM720T核。雖然這種無線通信 IP硬核的性能比較高,但是由于其參數(shù)往往都已經(jīng)固化在片內,靈活性差,而且與其他片內外設不可分離地組合在一起,可移植性差,無線硬核的通信協(xié)議也比較復雜,使用不方便,致使整個系統(tǒng)的設計具有很大局限性。

    RF905是一款獨立于微控制器的無線收發(fā)器芯片,工作在433 MHz頻段。它將頻率調制解調器、功率放大器、晶體振蕩器等集成在一塊芯片內并且可以通過SPI接口進行編程,因此將其集成到各種嵌入式系統(tǒng)中非常方便。目前采用RF905芯片進行無線通信的系統(tǒng)都是采用查詢方式和中斷方式來實現(xiàn)[1-3]。由于這兩種傳輸方式在數(shù)據(jù)的傳輸過程中會經(jīng)常打斷CPU的運行,尤其是當進行大塊數(shù)據(jù)的傳輸時會占用CPU很多時間,從而大大降低了整個系統(tǒng)的性能。
    直接存儲訪問(DMA)是一種不經(jīng)過CPU而直接從內存存取數(shù)據(jù)的數(shù)據(jù)交換模式。由于整個數(shù)據(jù)的傳輸過程由DMA控制器控制,CPU可以不被打擾地處理其他的事情,提高了CPU的效率。因此本文設計的RF905無線通信IP軟核采用DMA方式,它可以在傳輸數(shù)據(jù)時將NIOSII CPU從繁重的工作中解脫出來以處理其他事情,因而大大降低了CPU的占用時間,提高了NIOSII系統(tǒng)的性能。由于其具有高性能、參數(shù)可配置、可移植、可裁剪等特點,并且具有很高的靈活性、實用性,更能滿足設計的要求。
1 無線通信 IP軟核的整體構架
    本文采用DMA傳輸方式設計的RF905無線通信 IP軟核的整體構架如圖1所示。

    該軟核主要由以下4個子模塊組成:RF905無線發(fā)送接收控制器、帶Avalon-MM Slave[4]接口的寄存器文件(簡稱寄存器文件)、帶Avalon-MM Master[5]接口的Master Read 類型DMA控制器(簡稱DMA讀控制器)和帶Avalon-MM Master接口的Master Write 類型DMA控制器(簡稱DMA寫控制器)。
    當NIOSII處理器[6-9]需要進行無線數(shù)據(jù)發(fā)送時,首先需要通過帶Avalon-MM Slave接口的寄存器文件對RF905無線發(fā)送接收控制器和Master Read 類型DMA控制器進行配置,以設定要發(fā)送到達的地址、將要發(fā)送的數(shù)據(jù)的字節(jié)數(shù)以及該數(shù)據(jù)存放在內存中的基地址;然后將要發(fā)送的數(shù)據(jù)寫到指定位置內存中并啟動Master Read 類型DMA控制器,從而將存儲器中的數(shù)據(jù)通過RF905無線發(fā)送接收控制器逐一發(fā)送出去。當所有要發(fā)送的數(shù)據(jù)發(fā)送完畢時會向NIOSII處理器產(chǎn)生一個中斷,告知處理器串口數(shù)據(jù)發(fā)送完畢,從而可以啟動下一次數(shù)據(jù)發(fā)送。由于整個數(shù)據(jù)發(fā)送的過程是由Master Read 類型DMA控制器管理的, NIOSII處理器可以專心處理其他的事情而不被打擾,因而NIOSII CPU的利用率大大提高。
    當NIOSII處理器需要進行無線數(shù)據(jù)接收時,首先需要通過帶Avalon-MM Slave接口的寄存器文件對RF905無線發(fā)送接收控制器和Master Write 類型DMA控制器進行配置,以設定本機的接收地址、將要接收的數(shù)據(jù)的字節(jié)數(shù)以及該數(shù)據(jù)存放在內存中的基地址;然后啟動Master Write 類型DMA控制器,從而將通過RF905無線發(fā)送接收控制器接收到的數(shù)據(jù)逐個地存儲到存儲器的指定位置。當所有要接收的數(shù)據(jù)接收完畢時會向NIOSII處理器產(chǎn)生一個中斷,告知處理器串口數(shù)據(jù)接收完畢,此時NIOSII處理器可以從存儲器中讀取接收到的數(shù)據(jù)進行處理并啟動下一次數(shù)據(jù)接收。由于整個數(shù)據(jù)接收的過程是由Master Write 類型DMA控制器管理的,NIOSII處理器可以專心處理其他的事情而不被打擾,因而NIOSII CPU的利用率大大提高。
2  模塊的設計與實現(xiàn)
2.1 RF905無線發(fā)送接收控制器
2.1.1 RF905無線發(fā)送控制器

    當有數(shù)據(jù)要發(fā)送時,首先通過SPI接口把接收機的地址和要發(fā)送的數(shù)據(jù)送傳給RF905,而后置高TRX_CE和TX_EN,使RF905進入數(shù)據(jù)發(fā)送模式。在數(shù)據(jù)發(fā)送模式下,RF905首先開啟射頻寄存器,然后進行數(shù)據(jù)打包(加字頭和CRC校驗碼)并將其發(fā)送出去。當數(shù)據(jù)發(fā)送完成,數(shù)據(jù)準備好引腳被置高,此時應將TRX_CE置低以進入空閑狀態(tài)。至此一次完整的RF905數(shù)據(jù)發(fā)送過程完成。
    本文利用有限狀態(tài)機的方法采用Verilog硬件描述語言設計了一個RF905發(fā)送控制器,從而完成對RF905無線數(shù)據(jù)發(fā)送的時序控制。其狀態(tài)轉移圖如圖2所示。

    從圖2可以看出,狀態(tài)機一開始處于idle狀態(tài)。當啟動Master Read 類型DMA控制器以進行一次數(shù)據(jù)發(fā)送時,狀態(tài)機進入load_address狀態(tài)。load_address、send_address這兩個狀態(tài)主要用于通過三線的SPI接口設置要發(fā)送到的4 B地址,而后進入load_data狀態(tài)。Load_data狀態(tài)主要用于獲取由Master Read 類型DMA控制器從內存中讀取的32 B數(shù)據(jù),并將其送入發(fā)送移位寄存器,而后狀態(tài)機進入send_data狀態(tài)。send_data、finish這兩個狀態(tài)主要用于將發(fā)送移位寄存器中的數(shù)據(jù)通過三線SPI接口的控制下寫入到RF905片內的FIFO緩存中,而后狀態(tài)機將進入wait狀態(tài)。在該狀態(tài)首先置高TRX_CE和TX_EN以啟動一次數(shù)據(jù)發(fā)送,然后通過DR引腳是否為高電平來判斷數(shù)據(jù)發(fā)送是否完成,如果完成則將TRX_CE置低,并進入block_finish狀態(tài)。在該狀態(tài)狀態(tài)機對已經(jīng)發(fā)送的數(shù)據(jù)字節(jié)數(shù)進行判斷,如果小于欲發(fā)送的字節(jié)數(shù),則說明所有的數(shù)據(jù)還沒有發(fā)送完畢,計數(shù)加1并進入load_address狀態(tài),以讀取并發(fā)送下一個數(shù)據(jù)字節(jié),直到所有的數(shù)據(jù)字節(jié)都發(fā)送完畢,狀態(tài)機將進入master_done狀態(tài),在該狀態(tài)狀態(tài)機檢測本次DMA傳輸是否完畢,如果完畢則產(chǎn)生中斷信號并進入idle狀態(tài)。至此一次完整的DMA傳輸方式的RF905無線數(shù)據(jù)發(fā)送完成。
2.1.2 RF905無線接收控制器
    當有數(shù)據(jù)需要接收時,首先通過SPI接口把本機的地址傳給RF905,而后置高TRX_CE并置低TX_EN,使RF905進入數(shù)據(jù)接收模式。在數(shù)據(jù)接收模式下,RF905會自動進行載波檢測和地址匹配,當一個正確的數(shù)據(jù)包接收完畢,RF905自動移去字頭、地址和CRC校驗位,然后把DR引腳置高。此時應將TRX_CE置低以進入空閑狀態(tài)并通過SPI接口讀取接收到的數(shù)據(jù)。至此一次完整的RF905數(shù)據(jù)接收過程完成。
    本文利用有限狀態(tài)機設計了一個RF905接收控制器,從而完成了對RF905無線數(shù)據(jù)接收的時序控制。其狀態(tài)轉移圖如圖3所示。

    從圖3可以看出,狀態(tài)機一開始處于idle狀態(tài)。當啟動Master Write 類型DMA控制器以進行一次數(shù)據(jù)接收時,狀態(tài)機進入start狀態(tài)。start狀態(tài)主要用于將TRX_CE置為高電平并將TX_EN置為低電平以啟動一次數(shù)據(jù)接收,而后進入ready狀態(tài)。在該狀態(tài)通過DR引腳是否為高電平來判斷數(shù)據(jù)接收是否完成,如果完成則將TRX_CE置低,并進入recv(receive data)狀態(tài)。recv與finish這兩個狀態(tài)主要用于從RF905片內的FIFO緩存中接收字節(jié)數(shù)據(jù)并存放到接收移位寄存器中。當32 B數(shù)據(jù)接收完畢時,將該字節(jié)數(shù)據(jù)交給Master Write 類型DMA控制器以完成字節(jié)數(shù)據(jù)到內存的寫操作,而后狀態(tài)機經(jīng)過load和buffer_ready兩個狀態(tài)進入block_finish狀態(tài)。在該狀態(tài),狀態(tài)機對已經(jīng)接收到的數(shù)據(jù)字節(jié)數(shù)進行判斷,如果小于欲接收的字節(jié)數(shù)則說明所有的數(shù)據(jù)還沒有接收完畢,狀態(tài)機將返回ready狀態(tài),直到所有的數(shù)據(jù)字節(jié)都接收完畢,狀態(tài)機將進入master_done狀態(tài)。Master_done狀態(tài)檢測本次DMA傳輸是否完畢,如果完畢則產(chǎn)生中斷信號并經(jīng)過get_done狀態(tài)進入idle狀態(tài)。至此一次完整的DMA傳輸方式的RF905無線數(shù)據(jù)接收完成。
2.2 寄存器文件
    本文設計的寄存器文件是具有Avalon-MM slave 接口的外設,它內部共有4個32 bit寄存器,具體結構和功能如表1所示。NIOSII處理器可以采用基地址+地址偏移量的方式來訪問這4個寄存器,從而實現(xiàn)對DMA方式RF905無線通信 IP軟核的配置以及對無線數(shù)據(jù)接收與發(fā)送的控制。


2.3 DMA讀控制器
    本文設計的DMA讀控制器是具有Avalon-MM Master 主端口的外設。它通過Avalon-MM Master 主端口與AVALON交換結構進行基本的讀傳輸,以完成從指定起始地址的存儲器中讀取指定長度的數(shù)據(jù)并傳送給RF905無線發(fā)送控制器發(fā)送出去。其仿真波形圖如圖4所示。

 

 

    從圖4可以看出,主端口讀傳輸在clk第一個上升沿開始。在第一個時鐘周期內主端口置address和read_n信號有效。如果waitrequest信號無效,則有效的讀數(shù)據(jù)會在第二個時鐘周期出現(xiàn)在readdata信號線上,主端口只需在第二個時鐘周期的上升沿捕獲readdata即可完成一次基本讀傳輸。
2.4 DMA寫控制器
    本文設計的DMA寫控制器是具有Avalon-MM Master 主端口的外設。它通過Avalon-MM Master主端口與AVALON交換結構進行基本的寫傳輸,以完成將RF905無線接收控制器接收到的指定長度的數(shù)據(jù)連續(xù)地存儲到指定起始地址的存儲器中去。其仿真波形圖如圖5所示。

    從圖5可以看出,主端口寫傳輸在clk第一個上升沿開始。在第一個時鐘周期內主端口置address、writedata和write_n信號有效。如果waitrequest信號無效,則有效的寫數(shù)據(jù)writedata會在第二個時鐘周期上升沿被AVALON交換結構捕獲,從而完成一次基本寫傳輸。
3 硬件測試
      本設計采用Verilog語言建立了一個頂層文件dma_wireless_ip.v,通過對4個子模塊進行實例化與互連,最終完成了基于DMA方式的RF905無線通信IP軟核的設計。選用Altera 公司的FPGA芯片EP2C35F672C8 作為硬件驗證的平臺。經(jīng)過QuartusII軟件的編譯、適配與綜合以及對編譯報告進行分析可知,整個IP核使用了763個LE(邏輯門),占LE總量的2.3%;475個寄存器、1 024 B的存儲器(8 192 Memory bits),占片內總存儲器的1.7%;主頻最高達到172.84 MHz,在資源和速度方面都能滿足較高的要求。
    由于該IP軟核基于AVALON總線,所以需要構建一個NIOSII系統(tǒng)對其進行測試。本文采用兩塊FPGA開發(fā)板并分別配一塊RF905無線收發(fā)器擴展板進行無線通信的硬件驗證。軟件采用C++語言為兩塊FPGA板分別編寫了基于NIOSII處理器的測試程序,一收一發(fā),以測試在不同傳輸距離下的傳輸速度和誤碼率,測試結果如表2所示。從表2可以看出,距離在500 m以內時,傳輸速率最快,可達到50 kb/s,而且誤碼率低于0.1%,能很好地滿足短距離無線通信的需求。


    此外,還測試了傳輸不同大小的數(shù)據(jù)塊時基于DMA方式的RF905無線通信 IP軟核占用NIOSII CPU的時間,并且與查詢方式和中斷方式進行了比較,比較結果如表3所示。

    從表3可以看出,DMA方式的無線通信IP軟核在數(shù)據(jù)傳輸時所消耗的CPU時間比查詢方式及中斷方式的都要短,而且隨著傳輸數(shù)據(jù)塊的不斷增大,DMA方式占用CPU時間短的優(yōu)勢就越明顯,從而大大提高了NIOSII處理器的性能。
參考文獻
[1] 楊劍.基于nRF905的無線射頻數(shù)據(jù)采集系統(tǒng)的開發(fā)與實現(xiàn)[D].中國優(yōu)秀碩士學位論文全文數(shù)據(jù)庫,2007.
[2] 楊均友.基于NIOSII處理器的無線電力參數(shù)監(jiān)測系統(tǒng)的設計與實現(xiàn)[D].北京:首都師范大學,2010.
[3] 李劍.基于Linux的嵌入式點菜系統(tǒng)終端[D].中國優(yōu)秀碩士學位論文全文數(shù)據(jù)庫,2006.
[4] Altera Corp.嵌入式文檔8.1版[EB/OL].[2000-03-20].http://www.altera.com.cn/literature/lit-nio2.jsp.
[5] Altera Corp.嵌入式外設IP用戶指南[EB/OL].[2011-02-01].http://www.altera.com.cn/literature/ug/ug_embedded_ip.pdf.
[6] Altera Corp.Nios II軟件開發(fā)人員手冊[EB/OL].[2002-06-11].http://www.altera.com.cn/literature/hb/nios2/n2sw_nii52002.pdf.
[7] 尹剛.短程無線通信在ITS不停車收費系統(tǒng)ETC中的應用[D].長春:吉林大學,2005.
[8] 周立功.SOPC嵌入式系統(tǒng)基礎教程[M].北京:北京航空航天大學出版社,2006.
[9] 侯長宏.基于NiosII嵌入式軟核的SOPC技術及應用[D].北京:首都師范大學,2008.

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