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

        ?

        PCI-E總線光纖接口卡的設(shè)計(jì)*

        2014-06-03 09:16:02溫宇辰李明偉陳玉龍
        電子技術(shù)應(yīng)用 2014年4期
        關(guān)鍵詞:設(shè)備

        溫宇辰,李明偉,陳玉龍

        (大連理工大學(xué) 電子信息與電氣工程學(xué)部,遼寧 大連116024)

        在高科技研究以及工業(yè)、醫(yī)療、交通、航空等眾多領(lǐng)域中,對(duì)高幀率和高分辨率的圖像數(shù)據(jù)需求逐漸加大,例如航天和軍工中高速物體運(yùn)動(dòng)軌跡的捕捉、3D動(dòng)漫、視頻定位和測(cè)量、高速公路交通監(jiān)控等。然而,連續(xù)的高幀率和高分辨率圖像采集將產(chǎn)生巨大的數(shù)據(jù)量,例如以10 f/s幀率傳輸分辨率為4 928 V×3 280H的視頻圖像時(shí),總線上的數(shù)據(jù)速率高達(dá) 1.23 Gb/s;以500 f/s幀率傳輸分辨率為640 V×480 H的視頻圖像時(shí),總線上的數(shù)據(jù)速率也高達(dá)1.18 Gb/s。為了實(shí)現(xiàn)1 Gb/s以上的傳輸速度且滿足實(shí)時(shí)性和長(zhǎng)距離傳輸?shù)囊螅x用光纖技術(shù)和PCI Express(簡(jiǎn)稱PCI-E)總線技術(shù)設(shè)計(jì)了 PCI-E總線光纖接口卡。

        光纖具有頻帶寬、傳輸距離長(zhǎng)、損耗低、抗干擾能力強(qiáng)等優(yōu)點(diǎn)[1],適用于大量數(shù)據(jù)的遠(yuǎn)程傳輸。PCI-E總線采用了串行點(diǎn)對(duì)點(diǎn)通信技術(shù),使傳輸速率大幅度提高,PCI-E 1.0標(biāo)準(zhǔn)的單通道單向速率高達(dá)2.5 Gb/s,且最大支持32通道[2]。PCI-E 3.0標(biāo)準(zhǔn)單通道單向速率可達(dá)8 Gb/s,是傳輸高速、大數(shù)據(jù)量總線的首選,具有研究和應(yīng)用價(jià)值。

        本文基于Spartan-6芯片設(shè)計(jì)的PCI Express光纖接口卡的驅(qū)動(dòng)程序,完成的功能有:(1)驅(qū)動(dòng)程序?qū)饫w接口卡硬件資源的獲?。?2)光纖接口卡能夠?qū)⒋罅繑?shù)據(jù)及時(shí)發(fā)送到計(jì)算機(jī)內(nèi)存中;(3)合理的中斷機(jī)制能夠滿足處理高速圖像的需要;(4)計(jì)算機(jī)可以向光纖接口卡發(fā)送參數(shù)命令。

        1 PCI Express接口卡的硬件結(jié)構(gòu)

        PCI Express接口卡基于Xilinx公司的Spartan-6 LTX系列FPGA設(shè)計(jì),完成圖像數(shù)據(jù)收發(fā)、數(shù)據(jù)緩存以及PCIE協(xié)議等工作,并將采集到的圖像數(shù)據(jù)通過PCI-E總線傳輸給計(jì)算機(jī)。Spartan-6 LTX系列FPGA內(nèi)部包含一個(gè)PCI-E端點(diǎn)硬核,完整實(shí)現(xiàn)了PCI-E1.0標(biāo)準(zhǔn)協(xié)議中的數(shù)據(jù)鏈路層和物理層的功能,可以完成1鏈路的PCI-E總線傳輸[3]。光纖接口卡采用單片高性能FPGA設(shè)計(jì),具有系統(tǒng)集成度高、硬件設(shè)計(jì)簡(jiǎn)潔且便于擴(kuò)展的特點(diǎn)。末端利用計(jì)算機(jī)對(duì)采集的圖像進(jìn)行顯示、存儲(chǔ)以及回放等操作。PCI Express接口卡的硬件結(jié)構(gòu)如圖1所示。

        圖1 PCI Express接口卡的硬件結(jié)構(gòu)圖

        利用ISE中的IP核生成工具CORE Generator對(duì)PCIE端點(diǎn)硬核進(jìn)行定制:設(shè)備ID采用默認(rèn)值,Vendor ID=0x10EE,Device ID=0x0007,這是驅(qū)動(dòng)程序識(shí)別該硬件的廠商號(hào)和設(shè)備號(hào);基址寄存器的類型選擇為Memory,開辟一個(gè)32位尋址的1 KB大小的存儲(chǔ)器空間;中斷設(shè)置為采用INTA的傳統(tǒng)中斷類型。

        基址寄存器設(shè)計(jì)是實(shí)現(xiàn)接口卡功能關(guān)鍵內(nèi)容,按照偏移地址將1 KB的存儲(chǔ)器空間劃分成功能不同的寄存器,部分定義如表1所示。

        表1 部分寄存器定義

        2 PCI Express接口卡的驅(qū)動(dòng)程序

        2.1 開發(fā)工具Windows DDK簡(jiǎn)介

        Windows DDK是微軟提供的驅(qū)動(dòng)程序開發(fā)工具包,包括了設(shè)備驅(qū)動(dòng)開發(fā)的文檔、頭文件和庫(kù)文件、調(diào)試工具和程序示例。先將Windows DDK導(dǎo)入VC++軟件開發(fā)工具,然后用C語(yǔ)言編寫驅(qū)動(dòng)程序代碼,編譯后再用Windows DDK中的調(diào)試軟件調(diào)試,生成可執(zhí)行的驅(qū)動(dòng)程序。使用Windows DDK能夠開發(fā)出真正意義上的核心態(tài)驅(qū)動(dòng)程序,它所開發(fā)的驅(qū)動(dòng)程序效率也是最高的,但必須詳細(xì)了解操作系統(tǒng)的內(nèi)核工作方式,開發(fā)難度較大[4]。

        常用開發(fā)工具還有 WinDriver和DriverStudio,為了獲得最大的驅(qū)動(dòng)程序效率,選擇采用Windows DDK來設(shè)計(jì)PCI Express接口卡的驅(qū)動(dòng)程序。

        2.2 WDM啟動(dòng)程序的結(jié)構(gòu)

        通常WDM驅(qū)動(dòng)程序都是基于分層的結(jié)構(gòu)設(shè)計(jì),由功能驅(qū)動(dòng)函數(shù)、總線驅(qū)動(dòng)程序和過濾器驅(qū)動(dòng)程序三部分組成。完成一個(gè)設(shè)備的操作,至少要有兩個(gè)驅(qū)動(dòng)設(shè)備共同完成[5],一個(gè)是總線驅(qū)動(dòng)程序生成的物理設(shè)備對(duì)象(PDO),另一個(gè)是功能驅(qū)動(dòng)程序生成的功能設(shè)備對(duì)象(FDO)。

        Windows XP系統(tǒng)檢測(cè)到PCI-E接口卡插入主板卡槽時(shí),總線驅(qū)動(dòng)會(huì)自動(dòng)創(chuàng)建出一個(gè)PDO。但是PDO不能單獨(dú)操作設(shè)備,還需要將實(shí)現(xiàn)功能的FDO掛載在總線驅(qū)動(dòng)生成的PDO上,即相當(dāng)于功能驅(qū)動(dòng)程序掛載到了指定的硬件設(shè)備上[6],實(shí)現(xiàn)驅(qū)動(dòng)程序?qū)τ布O(shè)備的控制。

        2.3 接口卡發(fā)送數(shù)據(jù)

        為了提高接口卡的傳輸效率,采用DMA的傳輸方式將圖像數(shù)據(jù)通過PCI-E總線發(fā)送到計(jì)算機(jī)。在DMA傳輸過程中,PCI-E接口卡作為DMA傳輸?shù)闹骺仄鳎瑪?shù)據(jù)的傳輸速度基本由PCI-E總線的傳輸速度決定[7]。

        2.3.1 獲取接口卡的資源信息

        接口卡發(fā)送圖像數(shù)據(jù)之前,驅(qū)動(dòng)程序要將DMA傳輸?shù)哪繕?biāo)地址以及數(shù)據(jù)負(fù)載的大小發(fā)送給接口卡,驅(qū)動(dòng)程序需要先獲取接口卡上的硬件資源,如接口卡端點(diǎn)內(nèi)存的物理地址等。

        首先根據(jù)設(shè)備類型和設(shè)備擴(kuò)展的大小,利用函數(shù)IoCreateDevice生成并初始化一個(gè)FDO;其次利用函數(shù)IoAttachDeviceToDeviceStack將生成的FDO附加在系統(tǒng)生成的PDO上;然后向PDO轉(zhuǎn)發(fā)一個(gè)IRP_MN_START_DEVICE類型的 I/O請(qǐng)求包(IRP),PDO會(huì)根據(jù)設(shè)備的類型自動(dòng)枚舉該設(shè)備的所有資源。為了使FDO能夠得到底層PDO處理IRP的結(jié)果,需要同時(shí)將一個(gè)同步事件發(fā)送給底層PDO。PDO處理完IRP后立刻激發(fā)同步事件,通知FDO查詢此次IRP的結(jié)果;PDO完成了對(duì)IRP_MN_START_DEVICE命令的響應(yīng)后,將獲取到的接口卡設(shè)備資源存儲(chǔ)在IRP中名為IO_STACK_LOCATION結(jié)構(gòu)的設(shè)備堆棧中[8],流程如圖2所示。

        利用函數(shù)IoGetCurrentIrpStackLocation可以獲得該IO_STACK_LOCATION結(jié)構(gòu),主要包含接口卡的中斷信息、端點(diǎn)內(nèi)存寄存器資源以及接口卡的物理地址等設(shè)備硬件資源。

        圖2 獲取接口卡硬件資源流程圖

        2.3.2 分配內(nèi)存空間并實(shí)現(xiàn)乒乓操作

        為了盡可能提高計(jì)算機(jī)內(nèi)存資源利用率,驅(qū)動(dòng)程序分配的內(nèi)存空間大小與每次DMA傳輸?shù)膱D像數(shù)據(jù)大小需保持一致。先利用函數(shù)IoGetDmaAdapter獲取一個(gè)DMA適配器,包含了開辟內(nèi)存空間的函數(shù)AllocateCommonBuffer,調(diào)用此函數(shù)獲得一段指定大小的連續(xù)物理內(nèi)存,保存物理內(nèi)存的邏輯地址作為DMA傳輸?shù)哪繕?biāo)地址。

        預(yù)先在計(jì)算機(jī)中分配了多塊內(nèi)存空間,使計(jì)算機(jī)可以在處理一塊寫滿了圖像數(shù)據(jù)的內(nèi)存緩沖區(qū)的同時(shí),用另一塊閑置的內(nèi)存緩沖區(qū)接收DMA傳輸?shù)膱D像數(shù)據(jù),從而實(shí)現(xiàn)乒乓操作,提高傳輸效率[9]。

        接收到DMA傳輸開始的指令后,PCI-E接口卡會(huì)根據(jù)分配好的內(nèi)存空間地址和設(shè)定好的DMA傳輸負(fù)載長(zhǎng)度,不斷地向計(jì)算機(jī)發(fā)送帶有圖像數(shù)據(jù)的TLPs數(shù)據(jù)包[10]。每次DMA傳輸結(jié)束后,驅(qū)動(dòng)程序都會(huì)根據(jù)是否希望繼續(xù)進(jìn)行DMA傳輸選擇輪轉(zhuǎn)一塊新的內(nèi)存地址發(fā)送給接口卡或者釋放相關(guān)資源。DMA傳輸操作流程圖如圖3所示。

        圖3 DMA傳輸操作流程圖

        2.4 驅(qū)動(dòng)程序的中斷處理

        驅(qū)動(dòng)程序接收到PCI-E接口卡產(chǎn)生的中斷信號(hào),表明PCI-E接口卡已經(jīng)向計(jì)算機(jī)指定的內(nèi)存空間完成了一次DMA傳輸,要通知應(yīng)用層程序?qū)?nèi)存中的數(shù)據(jù)進(jìn)行訪問,完成顯示、存儲(chǔ)等功能。先利用函數(shù)IoConnect-Interrupt將中斷例程與設(shè)備產(chǎn)生的中斷信號(hào)綁定。根據(jù)計(jì)算機(jī)中斷優(yōu)先級(jí)的規(guī)則,硬件中斷會(huì)得到操作系統(tǒng)的優(yōu)先響應(yīng)[11]。

        計(jì)算機(jī)操作系統(tǒng)檢測(cè)到PCI-E接口卡的中斷信號(hào)來臨時(shí),立即進(jìn)入中斷服務(wù)例程(ISR)。由于接口卡采用的傳統(tǒng)中斷是一種電平中斷信號(hào),還需要驅(qū)動(dòng)程序在ISR中進(jìn)一步完成對(duì)中斷來源的判斷和清除中斷的操作。

        采用同步事件方式實(shí)現(xiàn)中斷信號(hào)的同步處理,先在應(yīng)用程序中定義一個(gè)與驅(qū)動(dòng)程序共享的同步事件,并通過DeviceIoControl函數(shù)把該事件句柄傳遞給驅(qū)動(dòng)程序,等待事件觸發(fā)之后再進(jìn)行讀數(shù)據(jù)操作。驅(qū)動(dòng)程序根據(jù)所傳遞的這個(gè)事件句柄創(chuàng)建一個(gè)相應(yīng)的內(nèi)核事件[12]。中斷發(fā)生時(shí)驅(qū)動(dòng)程序調(diào)用KeSetEvent函數(shù)將同步事件設(shè)置為激發(fā)態(tài),通知應(yīng)用程序中斷已經(jīng)發(fā)生。盡量減少ISR程序的運(yùn)行時(shí)間,將激發(fā)同步事件的動(dòng)作設(shè)計(jì)發(fā)生在擁有較低中斷等級(jí)的延遲過程調(diào)用例程(DPC)中[13]。中斷處理流程如圖4所示。

        圖4 中斷處理流程

        2.5 驅(qū)動(dòng)程序向接口卡發(fā)送指令

        指令發(fā)送可以分為兩個(gè)子過程,首先應(yīng)用程序與驅(qū)動(dòng)程序?qū)崿F(xiàn)交互,然后驅(qū)動(dòng)程序再根據(jù)交互獲得的參數(shù),修改PCI-E接口卡端點(diǎn)內(nèi)存中寄存器的值[14]。

        用函數(shù)IoRegisterDeviceInterface將一個(gè)名為GUID的128位二進(jìn)制數(shù)字標(biāo)識(shí)符與PDO綁定在一起。應(yīng)用程序利用函數(shù)OpenDeviceByGuid獲取被綁定的驅(qū)動(dòng)程序的設(shè)備句柄,再利用這個(gè)設(shè)備句柄和函數(shù)DeviceIoControl完成應(yīng)用程序與驅(qū)動(dòng)程序之間的通信與交互。DeviceIo-Control函數(shù)可以將指定字節(jié)數(shù)量的數(shù)據(jù)傳入驅(qū)動(dòng)程序,同時(shí)也可以接收驅(qū)動(dòng)程序返回的數(shù)據(jù)。

        下面舉例給出一個(gè)發(fā)送光纖相機(jī)幀的行大小的參數(shù)指令代碼:

        應(yīng)用層將相機(jī)參數(shù)和指令一同發(fā)送給了驅(qū)動(dòng)程序,驅(qū)動(dòng)程序利用在獲取PCI-E接口卡硬件資源時(shí),保存接口卡物理地址和端點(diǎn)內(nèi)存的寄存器偏移地址,完成對(duì)寄存器中數(shù)據(jù)的修改,實(shí)現(xiàn)對(duì)前端相機(jī)的控制。

        利用FPGA內(nèi)的計(jì)數(shù)器不斷產(chǎn)生數(shù)據(jù),使PCI-E接口卡不停地進(jìn)行DMA傳輸。應(yīng)用程序使用QueryPerformanceFrequency獲取處理器頻率,使用QueryPerformance-Counter查詢定時(shí)器計(jì)數(shù)值。經(jīng)多次反復(fù)測(cè)試,系統(tǒng)實(shí)際最大有效傳輸速度為 1.5 Gb/s,高于利用 DriverStudio工具開發(fā)的驅(qū)動(dòng)程序?qū)崿F(xiàn)的720 Mb/s有效傳輸速度[15]。

        PCI-E總線采用 8b/10b編碼,因此使用 1.0標(biāo)準(zhǔn)的 PCI-E總線的理論有效輸速度為 2.0 Gb/s[16],分析實(shí)際有效傳輸速度沒能達(dá)到理論值的原因是:(1)驅(qū)動(dòng)程序基于Windows XP系統(tǒng)設(shè)計(jì),該操作系統(tǒng)不支持MSI中斷方式,在響應(yīng)DMA傳輸?shù)膫鹘y(tǒng)中斷時(shí)會(huì)占用一定時(shí)間;(2)發(fā)起DMA傳輸前需要設(shè)置FPGA內(nèi)相關(guān)寄存器,這也需要一定的時(shí)間。

        經(jīng)安裝光纖相機(jī)后測(cè)試,能夠清晰、流暢地顯示圖像大小為1 280 H×720 V、幀率為 120 f/s、傳輸速率為 842 Mb/s的圖像數(shù)據(jù)。驅(qū)動(dòng)程序工作穩(wěn)定,并且可滿足多種數(shù)據(jù)類型的傳輸。

        [1]吳德明.光纖通信原理與技術(shù)[M].北京:科學(xué)出版社,2004.

        [2]王齊.PCI Express體系結(jié)構(gòu)導(dǎo)讀[M].北京:機(jī)械工業(yè)出版社,2010.

        [3]XILINX.Xilinx solutions guide for PCI express user guide[EB/OL].[2009-09-16].Http://www.xilinx.com/.

        [4]李忠輝,張志文.PCI設(shè)備驅(qū)動(dòng)程序的開發(fā)和應(yīng)用[J].西安工業(yè)學(xué)院學(xué)報(bào),2005,25(1):8-11.

        [5]張帆,史彩成.Windows驅(qū)動(dòng)開發(fā)技術(shù)形式詳解[M].北京:電子工業(yè)出版社,2008.

        [6]蹇紅梅,居錦武,王蘭英.Windows設(shè)備驅(qū)動(dòng)程序的開發(fā)[J].四川理工學(xué)院學(xué)報(bào)(自然科學(xué)版),2007(4):11-13.

        [7]席華偉.基于Verilog語(yǔ)言的DMA控制器的設(shè)計(jì)與仿真[D].西安:西安電子科技大學(xué),2007.

        [8]武安河.Windows 2000/XP WDM設(shè)備驅(qū)動(dòng)程序開發(fā)[M].北京:電子工業(yè)出版社,2003.

        [9]何柳,陳勇,吳斌.PCI/PCI-E高速實(shí)時(shí)DMA傳輸驅(qū)動(dòng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2012,38(11):143-145.

        [10]董永吉,陳庶樵,李玉峰,等.Xilinx PCI-Express核總線接口設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2011,37(8):135-138.

        [11]田澤,劉娟,王琦卉.基于WDM的 PCIE驅(qū)動(dòng)設(shè)計(jì)和實(shí)現(xiàn)[J].軟件導(dǎo)刊,2010,9(4):9-10.

        [12]司剛,付少鋒,周利華.WDM驅(qū)動(dòng)程序中設(shè)備事件通知技術(shù)研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2006,16(4):144-146.

        [13]梁國(guó)龍,何昕,魏仲慧,等.PCIE數(shù)據(jù)采集系統(tǒng)的驅(qū)動(dòng)程序開發(fā)[J].計(jì)算機(jī)工程與應(yīng)用,2009,45(31):63-65.

        [14]Peng Yu,Li Bo,Liu Datong,et al.A High Speed DMA transaction method for PCI express devices[J].Journal of Electronic Science and Technology of China,2009,7(4):380-384.

        [15]王維,蔣景宏,劉垚.基于 PCI Express總線光纖采集卡WDM驅(qū)動(dòng)程序設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2013,21(1):272-275.

        [16]PCI-SIG.PCI Express card electromechanical specification revision 1.0[S].2002.

        猜你喜歡
        設(shè)備
        諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
        調(diào)試新設(shè)備
        基于VB6.0+Access2010開發(fā)的設(shè)備管理信息系統(tǒng)
        基于MPU6050簡(jiǎn)單控制設(shè)備
        電子制作(2018年11期)2018-08-04 03:26:08
        廣播發(fā)射設(shè)備中平衡輸入與不平衡輸入的轉(zhuǎn)換
        電子制作(2018年10期)2018-08-04 03:24:48
        食之無味,棄之可惜 那些槽點(diǎn)滿滿的可穿戴智能設(shè)備
        500kV輸變電設(shè)備運(yùn)行維護(hù)探討
        HTC斥資千萬(wàn)美元入股虛擬現(xiàn)實(shí)設(shè)備商WEVR
        Automechanika Shanghai 2014 之“看” 汽保設(shè)備篇
        如何在設(shè)備采購(gòu)中節(jié)省成本
        久久久婷婷综合五月天| 激情综合一区二区三区| 亚洲 欧美 国产 日韩 精品| 欧美日韩国产在线成人网| 国产三级视频在线观看国产 | 亚洲一区二区国产一区| 中文字幕乱码高清完整版| 欧美成人一区二区三区在线观看| 69av视频在线| 日本大片一区二区三区| 成年免费a级毛片免费看无码 | 国产中文三级全黄| 亚洲精品国产av成拍色拍| 最新国产成人在线网站| 日韩在线精品免费观看| 中文字幕av伊人av无码av| 精品国产一区二区三区av 性色| 不卡国产视频| 亚洲av男人的天堂在线| 欧美成人午夜免费影院手机在线看 | 中文字幕第八页| 丰满人妻被猛烈进入中文字幕护士 | 公粗挺进了我的密道在线播放贝壳 | 亚洲日产精品一二三四区| 色999欧美日韩| 久久99久久久精品人妻一区二区| 国产无套内射又大又猛又粗又爽| 香蕉久久福利院| 国产日本在线视频| 宅男视频一区二区三区在线观看| 久久久久久欧美精品se一二三四| 少妇邻居内射在线| 亚洲美女性生活一级片| 国产三级视频不卡在线观看| 人人妻人人爽人人澡人人| 久久精品无码一区二区2020| 一区二区亚洲熟女偷拍| 国产av国片精品有毛| 久久99精品久久久久久| 中文字幕在线人妻视频| 国产一区二区三区在线综合视频 |