本發(fā)明涉及測(cè)控技術(shù)領(lǐng)域,尤其涉及一種基于pxie接口的dma控制器。
背景技術(shù):
隨著技術(shù)的不斷發(fā)展,設(shè)備對(duì)傳輸速度和帶寬有更高的要求。在實(shí)際測(cè)控系統(tǒng)中,大量數(shù)據(jù)的傳輸會(huì)占用cpu較多的時(shí)間,使得在進(jìn)行數(shù)據(jù)傳輸?shù)臅r(shí)候,主機(jī)無法進(jìn)行其他操作。為了提高cpu效率,測(cè)控系統(tǒng)中通常引入dma控制器,使得數(shù)據(jù)的傳輸不占用cpu的時(shí)間,提高系統(tǒng)的運(yùn)行效率。
隨著現(xiàn)代處理器技術(shù)的發(fā)展,在互連領(lǐng)域中,高度差分總線代替并行總線是大勢(shì)所趨。與單端并行信號(hào)相比,高速差分信號(hào)可以使用更高的時(shí)鐘頻率,從而使用更少的信號(hào)線,完成之前需要許多單端并行信號(hào)數(shù)據(jù)才能達(dá)到的總線帶寬。與pci總線相比,pxie總線可以每個(gè)通道獨(dú)享帶寬,支持雙向傳輸模式和數(shù)據(jù)分通道傳輸模式。同時(shí),pxie總線基于點(diǎn)到點(diǎn)互連,可以有效提到系統(tǒng)的魯棒性。
基于pxie總線的優(yōu)勢(shì),可以用于dma控制器與上位機(jī)之間的數(shù)據(jù)傳輸。但是當(dāng)dma控制通過pxie總線與其他pxie設(shè)備進(jìn)行通信時(shí),所傳輸?shù)臄?shù)據(jù)報(bào)文首先通過事務(wù)層被封裝成tlp,之后才能通過pxie總線的各個(gè)層析發(fā)送出去。但是pxie總線規(guī)定被傳送的數(shù)據(jù)區(qū)域不能跨域4kb邊界。傳統(tǒng)的解決方法是通過軟件方式解決,但此方法的缺點(diǎn)是需要cpu多次對(duì)dma控制器進(jìn)行配置,需要占用cpu的時(shí)間。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題在于提供一種基于pxie接口的dma控制器, 用以解決現(xiàn)有技術(shù)中cpu多次對(duì)dma控制器進(jìn)行配置,需要占用cpu的時(shí)間問題。
依據(jù)本發(fā)明的一方面,提供一種基于pxie接口的dma控制器,包括:
配置寄存器,用于配置數(shù)據(jù)傳輸量和數(shù)據(jù)傳輸目的首地址;
dma控制單元,用于判斷數(shù)據(jù)傳輸量是否滿足128byte;
當(dāng)所述數(shù)據(jù)傳輸量大于128byte,則根據(jù)所述數(shù)據(jù)傳輸量和所述數(shù)據(jù)傳輸目的首地址將數(shù)據(jù)分段進(jìn)行傳輸:
計(jì)算4k邊界前不足4k的數(shù)據(jù)段的數(shù)據(jù)傳輸目的首地址以及數(shù)據(jù)傳輸量,并判斷剩余數(shù)據(jù)傳輸量是否大于4k;
當(dāng)所述剩余數(shù)據(jù)傳輸量大于4k時(shí),則計(jì)算滿足4k的數(shù)據(jù)段的數(shù)據(jù)傳輸目的首地址和數(shù)據(jù)傳輸量,以及計(jì)算4k邊界后的數(shù)據(jù)段的數(shù)據(jù)傳輸目的首地址和數(shù)據(jù)傳輸量;
當(dāng)所述剩余數(shù)據(jù)數(shù)據(jù)傳輸量小于或者等于4k時(shí),則計(jì)算4k邊界后數(shù)據(jù)段的數(shù)據(jù)傳輸目的首地址和數(shù)據(jù)傳輸量;
根據(jù)每個(gè)數(shù)據(jù)段的數(shù)據(jù)傳輸目的首地址和數(shù)據(jù)傳輸量傳輸所有數(shù)據(jù)。
優(yōu)選地,所述dma控制單元用于在數(shù)據(jù)傳輸前,根據(jù)所述配置寄存器中的復(fù)位寄存器進(jìn)行復(fù)位。
優(yōu)選地,所述dma控制單元用于在數(shù)據(jù)傳輸前,根據(jù)所述配置寄存器的啟動(dòng)寄存器進(jìn)行啟動(dòng)。
優(yōu)選地,所述dma控制單元用于根據(jù)所述配置寄存器中的數(shù)據(jù)傳輸方向寄存器控制將數(shù)據(jù)發(fā)送至上位機(jī)或者接收上位機(jī)發(fā)送的數(shù)據(jù)。
優(yōu)選地,所述dma控制單元用于根據(jù)所述配置寄存器中的總線控制信號(hào)寄存器控制總線傳輸接口的打開或者關(guān)閉。
優(yōu)選地,所述dma控制器集成于fpga中。
本發(fā)明具有以下技術(shù)效果:
本發(fā)明所提供的基于pxie接口的dma控制器,通過對(duì)fpga進(jìn)行邏輯設(shè) 計(jì),解決了在數(shù)據(jù)傳輸中不能跨越4k邊界的問題,而且不需要cpu多次配置dma參數(shù),減少了數(shù)據(jù)傳輸對(duì)cpu的占用時(shí)間,提高了系統(tǒng)的整體效率,而且在大寬帶的要求中可以廣泛應(yīng)用。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例中基于pxie接口的dma控制器的結(jié)構(gòu)示意圖;
圖2為本發(fā)明實(shí)施例中dma控制器劃分?jǐn)?shù)據(jù)段的示意圖;
圖3為本發(fā)明實(shí)施例中dma控制器配置寄存器的流程圖;
圖4為本發(fā)明實(shí)施例中dma控制器控制傳輸數(shù)據(jù)的流程圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
參見圖1,本發(fā)明所提供的基于pxie接口的dma控制器的結(jié)構(gòu)示意圖,dma控制器采用fpga實(shí)現(xiàn),在dma控制器進(jìn)行寫操作時(shí),完成tlp數(shù)據(jù)從fpga到上位機(jī)間的傳輸;在dma控制器進(jìn)行讀操作時(shí),完成tlp數(shù)據(jù)從上位機(jī)到fpga的傳輸。本發(fā)明中一個(gè)tlp的最大負(fù)載數(shù)是128byte,如果需要傳 輸更多的數(shù)據(jù)需要傳送多個(gè)tlp。
由于pc機(jī)的內(nèi)存是分頁(yè)面管理的,一個(gè)頁(yè)面大小為4kb,在向pc機(jī)內(nèi)存寫數(shù)據(jù)時(shí),要求數(shù)據(jù)的傳輸不能跨越4kb邊界,而且在pxie協(xié)議中也要求不可以跨越4kb(簡(jiǎn)稱4k)邊界。
本發(fā)明中的基于pxie接口的dma控制器,如圖1所示,包括配置寄存器和dma控制單元,具體地,
配置寄存器,用于配置根據(jù)數(shù)據(jù)傳輸量和數(shù)據(jù)傳輸目的地址;
dma控制單元,用于判斷數(shù)據(jù)傳輸量是否滿足128byte:
當(dāng)數(shù)據(jù)傳輸量小于或者等于128byte時(shí),直接通過pxie口與上位機(jī)進(jìn)行數(shù)據(jù)傳輸;
當(dāng)數(shù)據(jù)傳輸量大于128byte,則根據(jù)數(shù)據(jù)傳輸量和數(shù)據(jù)傳輸目的首地址將數(shù)據(jù)分段進(jìn)行傳輸。
具體地,首先計(jì)算4k邊界前不足4k的數(shù)據(jù)段的數(shù)據(jù)傳輸目的首地址以及數(shù)據(jù)傳輸量,并判斷除去計(jì)算的4k邊界前不足4k的數(shù)據(jù)傳輸量后剩余數(shù)據(jù)傳輸量是否大于4k:
如圖2所示,當(dāng)剩余數(shù)據(jù)傳輸量大于4k時(shí),則計(jì)算滿足4k的數(shù)據(jù)段的數(shù)據(jù)傳輸目的首地址和數(shù)據(jù)傳輸量,以及計(jì)算4k邊界后的數(shù)據(jù)段的數(shù)據(jù)傳輸目的首地址和數(shù)據(jù)傳輸量。在此情況下,將所傳輸?shù)臄?shù)據(jù)分為三段,而后根據(jù)三個(gè)數(shù)據(jù)段的數(shù)據(jù)傳輸目的首地址和數(shù)據(jù)傳輸量,在配置一次配置寄存器后將所有數(shù)據(jù)傳輸。
而當(dāng)剩余數(shù)據(jù)數(shù)據(jù)傳輸量小于或者等于4k時(shí),則計(jì)算4k邊界后數(shù)據(jù)段的數(shù)據(jù)傳輸目的首地址和數(shù)據(jù)傳輸量。在此情況下,將所傳輸?shù)臄?shù)據(jù)分為兩段,根據(jù)兩個(gè)數(shù)據(jù)段的數(shù)據(jù)傳輸目的首地址和數(shù)據(jù)傳輸量傳輸所有數(shù)據(jù)。
通過上述方法,本發(fā)明有效解決了跨越4kb邊界的問題。根據(jù)傳輸數(shù)據(jù)的目的地址以及傳輸數(shù)據(jù)量的大小判斷是否跨越4kb邊界。對(duì)于大于4kb邊界的數(shù)據(jù)需要對(duì)其進(jìn)行分段傳輸。具體地,dma控制器將數(shù)據(jù)塊的傳輸分階段,第 一階段完成首地址到第一個(gè)4kb邊界地址的數(shù)據(jù);而后當(dāng)剩余數(shù)據(jù)傳輸量大于4k時(shí),將剩余數(shù)據(jù)量在分為兩段;當(dāng)當(dāng)剩余數(shù)據(jù)傳輸量小于或者等于4k時(shí),將剩余數(shù)據(jù)傳輸量作為單獨(dú)的一數(shù)據(jù)段。這樣可以在配置一次寄存器后,將所有的數(shù)據(jù)一次傳輸完畢,從而不需要cpu多次配置dma參數(shù),減少了數(shù)據(jù)傳輸對(duì)cpu的占用時(shí)間。
dma控制器控制用于數(shù)據(jù)傳輸?shù)呐渲眉拇嫫鞯男畔?,具體包括配置復(fù)位寄存器、數(shù)據(jù)目的地址寄存器、數(shù)據(jù)傳輸大小寄存器、數(shù)據(jù)傳輸方向寄存器、總線控制信號(hào)寄存器以及啟動(dòng)寄存器。在進(jìn)行數(shù)據(jù)傳輸時(shí),dma控制器配置寄存器的過程,參見圖3,包括如下步驟:
首先初始化dma句柄;
其次配置復(fù)位寄存器,對(duì)dma控制器進(jìn)行復(fù)位;
接著配置數(shù)據(jù)目的地址、數(shù)據(jù)傳輸大小、數(shù)據(jù)傳輸方向以及總線控制信號(hào)寄存器;
然后配置dma啟動(dòng)寄存器,控制dma控制器啟動(dòng),等待數(shù)據(jù)傳輸。
參見圖4,dma控制單元根據(jù)配置寄存器的配置信息配置dma參數(shù)。具體地,根據(jù)配置寄存器中復(fù)位寄存器對(duì)dma控制單元進(jìn)行復(fù)位;接著,接收配置寄存器發(fā)送的數(shù)據(jù)傳輸量大小、數(shù)據(jù)傳輸方向、數(shù)據(jù)傳輸目的首地址、以及總線控制信號(hào)。其中根據(jù)數(shù)據(jù)傳輸方向信號(hào)控制將數(shù)據(jù)發(fā)送至上位機(jī)還是接收上位機(jī)發(fā)送的數(shù)據(jù)以及總線控制信號(hào)控制總線傳輸接口打開。然后根據(jù)配置寄存器的啟動(dòng)寄存器對(duì)dma控制單元進(jìn)行啟動(dòng);接著根據(jù)數(shù)據(jù)傳輸量大小和數(shù)據(jù)傳輸目的首地址將數(shù)據(jù)進(jìn)行分段傳輸。在傳輸數(shù)據(jù)完成時(shí),根據(jù)配置寄存器的總線控制信號(hào)控制總線傳輸接口關(guān)閉,將總線釋放。
綜上所述,本發(fā)明中dma控制器可以有效解決數(shù)據(jù)傳輸中4kb邊界的問題。本發(fā)明實(shí)現(xiàn)了基于fpga的邏輯設(shè)計(jì)解決4kb邊界的跨越,只需cpu給dma控制器配置一次參數(shù),就可以完成數(shù)據(jù)的傳輸。通過fpga的邏輯,解決了在數(shù)據(jù)傳輸中不能跨越4kb邊界的問題,而且不需要cpu多次配置dma參 數(shù),節(jié)約cpu時(shí)間,提高系統(tǒng)運(yùn)行效率。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,程序可存儲(chǔ)于計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。
雖然通過實(shí)施例描述了本申請(qǐng),本領(lǐng)域的技術(shù)人員知道,本申請(qǐng)有許多變形和變化而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。