《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > RF905無線通信IP軟核的優化設計
RF905無線通信IP軟核的優化設計
來源:電子技術應用2012年第6期
袁慧梅,楊均友
首都師范大學 信息工程學院,北京100048
摘要: 利用DMA數據傳輸方式的特點,設計了一種基于DMA方式的RF905無線通信IP軟核。該IP軟核基于AVALON總線,其控制和運算邏輯由一片FPGA芯片完成,適合應用于NIOSII嵌入式系統。測試與驗證表明,該IP軟核在傳輸數據時大大降低了CPU的占用時間,提高了嵌入式系統的性能并且占用較少資源,與一般的IP硬核相比,速度快,成本低,靈活性好,可移植性強,從而更能滿足短距離無線通信的要求。該IP軟核已應用于某無線電力參數監測系統中。
中圖分類號: 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硬核實現,如TI公司的片內集成2.4 GHz的ZigBee無線收發模塊的CC2430單片機核、LINKUP System公司的帶藍牙無線收發器的L7205 ARM720T核。雖然這種無線通信 IP硬核的性能比較高,但是由于其參數往往都已經固化在片內,靈活性差,而且與其他片內外設不可分離地組合在一起,可移植性差,無線硬核的通信協議也比較復雜,使用不方便,致使整個系統的設計具有很大局限性。

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

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

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

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

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


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

 

 

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

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


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

    從表3可以看出,DMA方式的無線通信IP軟核在數據傳輸時所消耗的CPU時間比查詢方式及中斷方式的都要短,而且隨著傳輸數據塊的不斷增大,DMA方式占用CPU時間短的優勢就越明顯,從而大大提高了NIOSII處理器的性能。
參考文獻
[1] 楊劍.基于nRF905的無線射頻數據采集系統的開發與實現[D].中國優秀碩士學位論文全文數據庫,2007.
[2] 楊均友.基于NIOSII處理器的無線電力參數監測系統的設計與實現[D].北京:首都師范大學,2010.
[3] 李劍.基于Linux的嵌入式點菜系統終端[D].中國優秀碩士學位論文全文數據庫,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軟件開發人員手冊[EB/OL].[2002-06-11].http://www.altera.com.cn/literature/hb/nios2/n2sw_nii52002.pdf.
[7] 尹剛.短程無線通信在ITS不停車收費系統ETC中的應用[D].長春:吉林大學,2005.
[8] 周立功.SOPC嵌入式系統基礎教程[M].北京:北京航空航天大學出版社,2006.
[9] 侯長宏.基于NiosII嵌入式軟核的SOPC技術及應用[D].北京:首都師范大學,2008.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 国产精品中文字幕在线观看 | 成人午夜爽爽爽免费视频 | 亚洲成a人片在线网站 | 国产伦精品一区二区三区四区 | 欧美日韩国产亚洲一区二区 | 韩国毛片免费播放 | 亚洲女人网 | 久久久免费的精品 | 永久天堂 | 国产精品高清全国免费观看 | 欧美黑人巨大最猛性xxxxx | 久久www免费人成看国产片 | 无限观看社区在线视频 | 亚洲免费一级视频 | 国产一级在线观看视频 | 宅男66lu国产乱在线观看 | 黄色影院在线观看视频 | 日韩国产成人精品视频人 | 91久久精品国产免费一区 | 久久国产精品二国产精品 | 亚洲最大黄网 | 久久久久久青草大香综合精品 | 亚洲成人一区 | 在线播放精品一区二区啪视频 | 黄在线看 | 九九香蕉网 | 久草资源网 | 久草在在线视频 | 日本三级2021最新理论在线观看 | 欧美日韩亚洲综合在线一区二区 | 一级毛片免费在线播放 | 男女牲高爱潮免费视频男女 | 一级特黄特黄毛片欧美的 | 94欧美setu| 色天使色婷婷在线影院亚洲 | 日本黄色免费大片 | 成人观看视频又黄又免费 | 亚洲精品专区一区二区三区 | 精品国产一区二区三区免费看 | 小草青青神马影院 | 韩国美女爽快一毛片免费 |