《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > RF905無(wú)線通信IP軟核的優(yōu)化設(shè)計(jì)
RF905無(wú)線通信IP軟核的優(yōu)化設(shè)計(jì)
來(lái)源:電子技術(shù)應(yīng)用2012年第6期
袁慧梅,,楊均友
首都師范大學(xué) 信息工程學(xué)院,北京100048
摘要: 利用DMA數(shù)據(jù)傳輸方式的特點(diǎn),,設(shè)計(jì)了一種基于DMA方式的RF905無(wú)線通信IP軟核,。該IP軟核基于AVALON總線,其控制和運(yùn)算邏輯由一片F(xiàn)PGA芯片完成,,適合應(yīng)用于NIOSII嵌入式系統(tǒng),。測(cè)試與驗(yàn)證表明,該IP軟核在傳輸數(shù)據(jù)時(shí)大大降低了CPU的占用時(shí)間,,提高了嵌入式系統(tǒng)的性能并且占用較少資源,,與一般的IP硬核相比,速度快,,成本低,,靈活性好,可移植性強(qiáng),,從而更能滿足短距離無(wú)線通信的要求,。該IP軟核已應(yīng)用于某無(wú)線電力參數(shù)監(jiān)測(cè)系統(tǒng)中。
中圖分類號(hào): TP393
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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

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

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

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

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

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

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


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

 

 

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

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


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

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

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