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