亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        PCIe高速數(shù)據(jù)記錄方案設(shè)計(jì)與軟件實(shí)現(xiàn)

        2018-07-23 02:14:08趙英瀟
        電子科技 2018年7期
        關(guān)鍵詞:高速數(shù)據(jù)鏈表驅(qū)動(dòng)程序

        黃 睿,蘇 陽(yáng),趙英瀟,張 月

        (國(guó)防科學(xué)技術(shù)大學(xué) 電子科學(xué)與工程學(xué)院,湖南 長(zhǎng)沙 410073)

        隨著電子技術(shù)的不斷發(fā)展,寬帶雷達(dá)系統(tǒng)正朝著高速、數(shù)字化的方向迅速發(fā)展[1],對(duì)數(shù)據(jù)的實(shí)時(shí)記錄提出了更高的要求[2]。雷達(dá)數(shù)據(jù)記錄依賴外部設(shè)備與主板間的通信,PCIe協(xié)議作為板件通信最常用的標(biāo)準(zhǔn),采用點(diǎn)對(duì)點(diǎn)傳輸、內(nèi)嵌時(shí)鐘等方式[3-4],在硬件層面可以滿足高速數(shù)據(jù)實(shí)時(shí)記錄需求,因此,上位機(jī)軟件性能成為能否實(shí)現(xiàn)高速數(shù)據(jù)記錄的關(guān)鍵。

        針對(duì)上述問(wèn)題,本文在高性能硬件平臺(tái)上設(shè)計(jì)了一種合理的軟件架構(gòu),基于PCIe總線,采用DMA傳輸機(jī)制、乒乓緩存機(jī)制和內(nèi)存池技術(shù)共同實(shí)現(xiàn)高速數(shù)據(jù)流的實(shí)時(shí)記錄。文章闡述了方案詳細(xì)的實(shí)現(xiàn)流程,并通過(guò)結(jié)果驗(yàn)證方案的可行性。

        1 硬件平臺(tái)

        本文以某寬帶相控陣?yán)走_(dá)數(shù)據(jù)采集記錄系統(tǒng)研制為研究背景,采集得到的寬帶回波數(shù)據(jù)用于目標(biāo)的成像測(cè)量。寬帶數(shù)據(jù)采樣率為1.6 Gsps,量化位數(shù)32 bit,數(shù)據(jù)波門占雷達(dá)周期的35%。故寬帶數(shù)據(jù)的數(shù)據(jù)率可達(dá)1.6 Gsps×32/8×0.35 = 2.24 Gsps。

        為了滿足數(shù)據(jù)的高速記錄,本文的硬件平臺(tái)如圖1所示。硬件板卡與主板CPU之間通過(guò)PCIe協(xié)議進(jìn)行通信,采用PCIe 8×2.0接口[5],傳輸速率最高可達(dá)3.0 GB/s。存儲(chǔ)介質(zhì)為磁盤陣列,以實(shí)現(xiàn)數(shù)據(jù)的高速存儲(chǔ)。寬帶模擬回波經(jīng)過(guò)ADC采集形成高速數(shù)據(jù)流,在硬件FPGA的控制下,通過(guò)PCIe總線傳輸至主機(jī)內(nèi)存,最后存儲(chǔ)在磁盤陣列中。

        磁盤陣列的測(cè)速結(jié)果圖如圖2所示。磁盤陣列讀寫速度可達(dá)2.4 GB/s,因此,硬件平臺(tái)的數(shù)據(jù)傳輸和存儲(chǔ)性能滿足寬帶數(shù)據(jù)的高速記錄需求。

        圖1 采集記錄系統(tǒng)架構(gòu)

        圖2 磁盤陣列測(cè)速結(jié)果

        2 高速數(shù)據(jù)流傳輸實(shí)現(xiàn)

        數(shù)據(jù)傳輸方式可分為3種:輪詢、中斷和直接內(nèi)存存取(Direct Memory Access,DMA)。其中,輪詢機(jī)制會(huì)大量消耗CPU處理時(shí)間,中斷機(jī)制相比于輪詢機(jī)制在消耗CPU處理時(shí)間上有所改善,但仍會(huì)給CPU造成大量的中斷負(fù)載[6-7]。

        相比于前兩種數(shù)據(jù)傳輸機(jī)制,DMA是一種不依賴CPU實(shí)現(xiàn)內(nèi)存與外部設(shè)備之間數(shù)據(jù)轉(zhuǎn)移的傳輸機(jī)制。在DMA模式下,CPU只需向DMA控制器發(fā)送指令,由DMA控制器數(shù)據(jù)傳輸,數(shù)據(jù)傳送完畢再把信息反饋給CPU,在很大程度上減輕了CPU的資源占有率,大幅節(jié)省了系統(tǒng)資源[8]。因此,本文采用DMA機(jī)制進(jìn)行高速數(shù)據(jù)流傳輸。

        2.1 驅(qū)動(dòng)程序開(kāi)發(fā)

        DMA傳輸需要上位機(jī)軟件與硬件FPGA之間不斷進(jìn)行交互才能完成。然而,處于用戶層的上位機(jī)軟件無(wú)法直接訪問(wèn)硬件層。所有的硬件板卡通過(guò)PCIe總線與主板相連,故需要開(kāi)發(fā)基于PCIe總線的設(shè)備驅(qū)動(dòng)程序?qū)崿F(xiàn)上位機(jī)軟件與硬件之間的通信。

        本文采用WinDriver進(jìn)行PCIe設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)。WinDriver是一款使用簡(jiǎn)單、方便地驅(qū)動(dòng)開(kāi)發(fā)軟件,利用WinDriver開(kāi)發(fā)驅(qū)動(dòng)程序無(wú)需程序員熟悉操作系統(tǒng)的內(nèi)核,整個(gè)驅(qū)動(dòng)程序工作在用戶態(tài)下,可以大幅加速設(shè)備驅(qū)動(dòng)程序的開(kāi)發(fā)[9-10]。

        WinDriver的驅(qū)動(dòng)程序框架如圖3所示。驅(qū)動(dòng)程序首先對(duì)硬件設(shè)備進(jìn)行初始化,打開(kāi)WinDriver的內(nèi)核模塊,初始化WDC函數(shù)庫(kù)。根據(jù)指定的DeviceID和VendorID,掃描該硬件板卡并返回設(shè)備信息,最后打開(kāi)該P(yáng)CIe設(shè)備,并返回設(shè)備句柄。設(shè)備初始化后,將相應(yīng)的API函數(shù)加入PCIe驅(qū)動(dòng)程序代碼中,可以實(shí)現(xiàn)存儲(chǔ)器訪問(wèn)、配置寄存器訪問(wèn)、I/O訪問(wèn)、DMA數(shù)據(jù)傳輸、硬件中斷等功能[11]。

        圖3 WinDriver驅(qū)動(dòng)程序框架

        2.2 DMA傳輸流程

        每一次DMA數(shù)據(jù)傳輸過(guò)程,上位機(jī)軟件都需要向硬件配置所需的信息。DMA數(shù)據(jù)傳輸操作流程如圖4所示,過(guò)程如下[12-13]:

        圖4 DMA數(shù)據(jù)傳輸流程圖

        (1)第一次DMA傳輸,清空FPGA緩存,保證本次傳輸數(shù)據(jù)為最新數(shù)據(jù);

        (2)復(fù)位與DMA傳輸相關(guān)的控制/狀態(tài)寄存器,初始化DMA操作;

        (3)設(shè)置本次DMA需要發(fā)送TLP包的數(shù)量和載荷數(shù),并設(shè)置DMA寫地址;

        (4)收到DMA寫啟動(dòng)命令后,F(xiàn)PGA根據(jù)上一步設(shè)置的DMA數(shù)量大小組裝TLP包,然后發(fā)送到上一步指定的地址中,并將該地址中的數(shù)據(jù)映射到上位機(jī)的一個(gè)緩存區(qū)中;

        (5)DMA傳輸完成時(shí),F(xiàn)PGA的DMA完成狀態(tài)位(DMA_Done)有效,DMA傳輸完成,上位機(jī)通過(guò)輪詢或硬件中斷的方式獲取該標(biāo)志位,以進(jìn)行后續(xù)操作;

        (6)重復(fù)步驟(2),啟動(dòng)下一次DMA。

        基于上述操作,可實(shí)現(xiàn)硬件FPGA到主板的高速數(shù)據(jù)流持續(xù)傳輸。

        2.3 乒乓緩存機(jī)制

        采用乒乓緩存機(jī)制,可提升PCIe總線帶寬的利用率。傳統(tǒng)數(shù)據(jù)傳輸方法采用一個(gè)設(shè)備對(duì)應(yīng)一個(gè)傳輸通路,如圖5所示,每開(kāi)啟一次數(shù)據(jù)傳輸,主機(jī)得到DMA傳輸完成響應(yīng)后,對(duì)緩存中的數(shù)據(jù)進(jìn)行后續(xù)處理,之后循環(huán)往復(fù)。該方案在進(jìn)行主機(jī)內(nèi)存數(shù)據(jù)拷貝或者直接存儲(chǔ)的這段時(shí)間,PCIe總線一直處于空閑狀態(tài),故該方案對(duì)PCIe總線帶寬的利用率低。乒乓緩存則采用并行流水線的思想,傳輸?shù)臄?shù)據(jù)流按節(jié)拍、相互配合的切換,完成數(shù)據(jù)的無(wú)縫傳輸與處理[14]。如圖6所示,一個(gè)設(shè)備對(duì)應(yīng)兩個(gè)傳輸通路,在開(kāi)啟一個(gè)通路進(jìn)行數(shù)據(jù)傳輸時(shí),對(duì)另一條通路對(duì)應(yīng)的緩存數(shù)據(jù)進(jìn)行后續(xù)處理。如此便減少了PCIe總線的空閑時(shí)間,提高了總線的利用率,同時(shí)也提高了數(shù)據(jù)傳輸?shù)乃俾省?/p>

        圖5 傳統(tǒng)傳輸機(jī)制示意圖

        圖6 乒乓傳輸機(jī)制示意圖

        基于乒乓緩存機(jī)制的DMA數(shù)據(jù)傳輸最大限度的利用了PCIe總線的帶寬,可以實(shí)現(xiàn)高速數(shù)據(jù)流的有效傳輸,為高速數(shù)據(jù)存儲(chǔ)提供保障。

        3 基于內(nèi)存池實(shí)現(xiàn)高速數(shù)據(jù)存儲(chǔ)

        DMA傳輸完畢后,緩存區(qū)的數(shù)據(jù)有兩種存儲(chǔ)方式:直接存儲(chǔ)和分開(kāi)存儲(chǔ)[15]。直接存儲(chǔ)的示意圖如圖7所示。直接存儲(chǔ)涉及頻繁的磁盤I/O操作,其直接影響數(shù)據(jù)傳輸效率,在數(shù)據(jù)高速持續(xù)記錄過(guò)程中極易導(dǎo)致FPGA緩存區(qū)變滿,造成數(shù)據(jù)丟失。硬件FPGA模擬寬帶直采數(shù)據(jù)率發(fā)送遞增自然數(shù),圖8和圖9分別顯示實(shí)時(shí)數(shù)據(jù)存儲(chǔ)速率和數(shù)據(jù)校驗(yàn)結(jié)果,結(jié)果表明,直接存儲(chǔ)方案數(shù)據(jù)存儲(chǔ)速率僅能達(dá)到約300 MB/s,F(xiàn)PGA緩存很快變滿,校驗(yàn)數(shù)據(jù)表明存儲(chǔ)數(shù)據(jù)不是嚴(yán)格的遞增自然數(shù)。故直接存儲(chǔ)方案無(wú)法滿足高速數(shù)據(jù)記錄需求。

        圖7 緩存區(qū)數(shù)據(jù)直接存儲(chǔ)示意圖

        圖8 緩存區(qū)數(shù)據(jù)直接存儲(chǔ)結(jié)果圖

        圖9 緩存區(qū)數(shù)據(jù)直接存儲(chǔ)數(shù)據(jù)校驗(yàn)結(jié)果

        分開(kāi)存儲(chǔ)是指DMA數(shù)據(jù)傳輸完成后,對(duì)數(shù)據(jù)進(jìn)行拷貝再存儲(chǔ),保證傳輸過(guò)程不受影響。為此,本文采用多線程技術(shù),設(shè)計(jì)了一種高速數(shù)據(jù)記錄的軟件架構(gòu),如圖10所示。軟件采用3個(gè)線程分別用于數(shù)據(jù)傳輸、拷貝和存儲(chǔ),傳輸線程通知拷貝線程復(fù)制緩存區(qū)數(shù)據(jù),拷貝數(shù)據(jù)進(jìn)入數(shù)據(jù)隊(duì)列,存儲(chǔ)線程再將隊(duì)列內(nèi)數(shù)據(jù)依次存儲(chǔ)。

        圖10 數(shù)據(jù)記錄軟件架構(gòu)

        高速數(shù)據(jù)流在記錄過(guò)程中必然涉及頻繁的內(nèi)存申請(qǐng),一般的動(dòng)態(tài)內(nèi)存申請(qǐng)采用new、malloc等API實(shí)現(xiàn),然而,它存在以下幾個(gè)缺點(diǎn)[16]:

        (1)在堆上頻繁申請(qǐng)/釋放內(nèi)存,系統(tǒng)需要需要查找/合并空閑內(nèi)存塊,會(huì)產(chǎn)生額外開(kāi)銷,降低系統(tǒng)效率;

        (2)在堆上頻繁申請(qǐng)/釋放內(nèi)存,會(huì)產(chǎn)生大量?jī)?nèi)存碎片,降低內(nèi)存利用率;

        (3)容易造成內(nèi)存泄漏;

        (4)內(nèi)存分配頻繁時(shí),有可能出現(xiàn)內(nèi)存申請(qǐng)失敗的情況。

        動(dòng)態(tài)內(nèi)存申請(qǐng)實(shí)現(xiàn)高速數(shù)據(jù)流記錄結(jié)果如圖11和圖12所示。該方案提高了數(shù)據(jù)存儲(chǔ)速度,但頻繁的內(nèi)存申請(qǐng)加大了系統(tǒng)開(kāi)銷,導(dǎo)致拷貝線程效率較低。數(shù)據(jù)校驗(yàn)結(jié)果不是嚴(yán)格的遞增自然數(shù),故動(dòng)態(tài)內(nèi)存申請(qǐng)仍然無(wú)法滿足高速數(shù)據(jù)記錄需求。

        圖11 動(dòng)態(tài)內(nèi)存申請(qǐng)存儲(chǔ)結(jié)果圖

        圖12 動(dòng)態(tài)內(nèi)存申請(qǐng)存儲(chǔ)數(shù)據(jù)校驗(yàn)結(jié)果

        基于上述問(wèn)題,本文提出了一種基于內(nèi)存池技術(shù)實(shí)現(xiàn)數(shù)據(jù)高速存儲(chǔ)的實(shí)現(xiàn)方案。

        內(nèi)存池是一種內(nèi)存分配方法,它大幅加快了申請(qǐng)/釋放內(nèi)存的速度。采用內(nèi)存池技術(shù)可有效避免操作系統(tǒng)級(jí)內(nèi)存碎片化問(wèn)題,使得內(nèi)存分配效率得到提高。

        內(nèi)存池的形成一般為一次性申請(qǐng)大量大小相同的小塊內(nèi)存。需要申請(qǐng)內(nèi)存時(shí)在內(nèi)存池中獲取內(nèi)存塊,內(nèi)存使用完畢再將內(nèi)存塊歸還到內(nèi)存池中。為了保證線程在O(1)時(shí)間內(nèi)獲取內(nèi)存塊,本文采用鏈表實(shí)現(xiàn)內(nèi)存池管理,鏈表的單元節(jié)點(diǎn)為一個(gè)內(nèi)存塊,內(nèi)存塊采用結(jié)構(gòu)體維護(hù),該結(jié)構(gòu)體如圖13所示。

        圖13 內(nèi)存池的內(nèi)存塊單元

        內(nèi)存池結(jié)構(gòu)示意圖如圖14所示,所有內(nèi)存塊單元采用鏈表結(jié)構(gòu)相連。鏈表節(jié)點(diǎn)數(shù)量上限固定。程序申請(qǐng)內(nèi)存時(shí),若鏈表不為空,從鏈表頭部取走內(nèi)存塊,否則動(dòng)態(tài)申請(qǐng)內(nèi)存塊。釋放內(nèi)存時(shí),若當(dāng)前鏈表長(zhǎng)度達(dá)到上限,直接釋放內(nèi)存塊,否則將內(nèi)存塊置于鏈表頭部?;趦?nèi)存池實(shí)現(xiàn)高速數(shù)據(jù)持續(xù)記錄的示意圖如圖15所示。

        圖14 內(nèi)存池結(jié)構(gòu)示意圖

        圖15 內(nèi)存池實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)示意圖

        4 實(shí)驗(yàn)結(jié)果分析

        本文采用實(shí)時(shí)數(shù)據(jù)存儲(chǔ)速率觀測(cè)、硬件模擬雷達(dá)時(shí)序產(chǎn)生遞增自然數(shù)、對(duì)實(shí)測(cè)數(shù)據(jù)進(jìn)行數(shù)據(jù)回放驗(yàn)證高速數(shù)據(jù)記錄軟件設(shè)計(jì)的可靠性。圖16和圖17表示硬件模擬雷達(dá)時(shí)序產(chǎn)生數(shù)據(jù)率為2.24 GB/s左右的遞增自然數(shù),數(shù)據(jù)實(shí)時(shí)存儲(chǔ)的速率以及校驗(yàn)結(jié)果。結(jié)果

        表明,系統(tǒng)的存儲(chǔ)速率基本穩(wěn)定在約2.24 GB/s,對(duì)存儲(chǔ)的數(shù)據(jù)文件進(jìn)行校驗(yàn),存儲(chǔ)數(shù)據(jù)為嚴(yán)格的遞增自然數(shù),保證了數(shù)據(jù)記錄的正確性。圖18表示系統(tǒng)在實(shí)測(cè)模式下,存儲(chǔ)的數(shù)據(jù)經(jīng)過(guò)回放后的波形圖和脈壓結(jié)果。結(jié)果表明,采集記錄的寬帶目標(biāo)在模擬靜止?fàn)顟B(tài)下的點(diǎn)目標(biāo)時(shí),對(duì)寬帶數(shù)據(jù)進(jìn)行脈沖壓縮后可以清晰的顯示寬帶數(shù)據(jù)的一維距離像,該距離像的位置保持不變(說(shuō)明目標(biāo)為靜止?fàn)顟B(tài)),證明了系統(tǒng)記錄到所需的目標(biāo)回波,驗(yàn)證了數(shù)據(jù)記錄的可靠性。

        圖16 寬帶數(shù)據(jù)實(shí)時(shí)記錄速率

        圖17 寬帶數(shù)據(jù)模擬遞增自然數(shù)校驗(yàn)結(jié)果

        圖18 模擬點(diǎn)目標(biāo)直采數(shù)據(jù)時(shí)域圖和脈壓結(jié)果

        5 結(jié)束語(yǔ)

        本文從工程實(shí)踐出發(fā),設(shè)計(jì)了一種合理的軟件架構(gòu),提出基于DMA數(shù)據(jù)傳輸機(jī)制、乒乓緩存機(jī)制和內(nèi)存池技術(shù)相結(jié)合的方案實(shí)現(xiàn)高速數(shù)據(jù)流的記錄。實(shí)驗(yàn)結(jié)果表明,在硬件平臺(tái)性能滿足需求的條件,本文設(shè)計(jì)的軟件平臺(tái)方案能夠滿足系統(tǒng)需求,平臺(tái)工作穩(wěn)定可靠,實(shí)測(cè)數(shù)據(jù)經(jīng)過(guò)事后回放能夠顯示出正確波形,驗(yàn)證了該方案的可行性。

        猜你喜歡
        高速數(shù)據(jù)鏈表驅(qū)動(dòng)程序
        基于二進(jìn)制鏈表的粗糙集屬性約簡(jiǎn)
        跟麥咭學(xué)編程
        基于鏈表多分支路徑樹(shù)的云存儲(chǔ)數(shù)據(jù)完整性驗(yàn)證機(jī)制
        基于AD9250的高速數(shù)據(jù)接口設(shè)計(jì)
        電子制作(2018年2期)2018-04-18 07:13:24
        PCI-e高速數(shù)據(jù)采集卡的驅(qū)動(dòng)與上位機(jī)軟件設(shè)計(jì)
        電子器件(2015年5期)2015-12-29 08:43:12
        基于AD7891的浮空器高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
        鏈表方式集中器抄表的設(shè)計(jì)
        基于PCI 2501的高速數(shù)據(jù)采集與反饋系統(tǒng)
        驅(qū)動(dòng)程序更新與推薦
        驅(qū)動(dòng)程序更新與推薦
        欧美日本日韩aⅴ在线视频| 亚洲女同恋av中文一区二区| 美女扒开大腿让男人桶| 久久综合狠狠综合久久| a观看v视频网站入口免费| 日本精品极品视频在线| 国产激情自拍在线视频| 国产一精品一av一免费| 中文字幕美人妻亅u乚一596| 九九久久精品大片| 白白色视频这里只有精品| 婷婷综合另类小说色区| 嗯啊哦快使劲呻吟高潮视频| 久久99精品久久久久九色| 日本一区二区三区丰满熟女| 激情综合色五月丁香六月欧美| 少妇被爽到高潮动态图| 亚洲av无码一区二区三区天堂古代 | 免费超爽大片黄| 少妇太爽了在线观看免费视频| 亚洲AV色欲色欲WWW| 狠狠爱婷婷网五月天久久| 精品无码国产一区二区三区av| 国产主播福利一区二区| 国产成年女人特黄特色毛片免| 久久综合精品人妻一区二区三区| 中国丰满熟妇xxxx性| 国产女高清在线看免费观看 | 论理视频二区三区四区在线观看| 亚洲日韩av无码一区二区三区人 | 性生交片免费无码看人| 亚洲国产精品自拍一区| 日韩亚洲午夜精品一区二区三区| 麻豆91蜜桃传媒在线观看| 中文国产日韩欧美二视频| 久久精品国产屋| 男男啪啪激烈高潮无遮挡网站网址| 亚洲va国产va天堂va久久| 免费毛片视频网站| 国产三级韩三级日产三级| 国精品人妻无码一区二区三区性色|