国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CPCI技術(shù)下對伺服卡WDM設(shè)計與研究

電子設(shè)計 ? 作者:工程師 ? 2018-10-08 14:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

引言

在當前光電子學系統(tǒng)中,以PC104 作為伺服控制分系統(tǒng),體積龐大,不便于系統(tǒng)管理。 開發(fā)具有伺服控制能力的處理卡,用一塊板卡替代原來的系統(tǒng),能簡化系統(tǒng)結(jié)構(gòu),提高系統(tǒng) 的集成度,使電子學系統(tǒng)最終成為一個高度集成的控制平臺。

CPCI(CompactPCI)總線在PCI 總線基礎(chǔ)之上,采用了歐洲卡結(jié)構(gòu),拋棄金手指式互 連方式,改用2mm 密度的針孔連接器,并具有可熱插拔性,使其具有了更高的可靠性和開放 性,并且能適應惡劣的工作環(huán)境,在工業(yè)控制、航空航天等領(lǐng)域得到廣泛應用。自行開發(fā)的 伺服控制卡基于CPCI 總線,以DSP 作為卡上控制CPU,與FPGA 結(jié)合實現(xiàn)控制。本論文以該 伺服控制卡為依托,在概述其硬件平臺結(jié)構(gòu)的基礎(chǔ)上,介紹了在Windows 2000 下CPCI 設(shè)備 驅(qū)動程序的設(shè)計與開發(fā),重點闡述了橋接芯片PCI9054 的DMA 數(shù)據(jù)傳輸實現(xiàn)及中斷處理機制。

1.伺服控制卡的系統(tǒng)結(jié)構(gòu)與硬件實現(xiàn)方案

伺服控制卡以 TI 公司的TMS320F2812 DSP 作為核心處理器,與FPGA 結(jié)合來實現(xiàn)整 個板卡的控制功能,通過CPCI 總線完成與上位PC 機的通信,其系統(tǒng)功能框圖如圖1 所示:

CPCI技術(shù)下對伺服卡WDM設(shè)計與研究
圖 1 伺服控制卡硬件結(jié)構(gòu)圖

FPGA 選用Altera 公司的EPF10K30A,它內(nèi)嵌1536ByteRAM,此RAM 為主機與DSP 共享,用于上位機與DSP 之間的高速數(shù)據(jù)緩沖,F(xiàn)PGA 負責接收上位機傳遞的命令和參數(shù) 等數(shù)據(jù),經(jīng)處理后發(fā)送給DSP 進行相應的控制操作,同時反饋信息給上位機。 TMS32F2812 的主要任務(wù)就是完成復雜的伺服控制算法,特別是位置控制和速度控制。

FPGA 通過2812 的外部中斷XINT1 和XINT2 來觸發(fā)2812 接收控制命令和參數(shù),2812 接收 到命令后,根據(jù)自身定義的工作協(xié)議進入相應的工作狀態(tài)。

系統(tǒng)設(shè)計中采用 PLX 公司的PCI9054 作為總線接口芯片,實現(xiàn)CPCI 局部總線與FPGA 的通信。PCI9054 采用C 模式,在該模式下,PCI 的數(shù)據(jù)線與地址線是非復用的,設(shè)計時只 需關(guān)注9054 的本地端總線。

2.WDM 驅(qū)動程序設(shè)計

在Windows 環(huán)境下,位于用戶態(tài)的應用程序不能之間訪問硬件資源,而要通過執(zhí)行核 心態(tài)的驅(qū)動程序來間接完成對硬件資源的訪問,因此,對于上位機上的應用程序,要對伺服 控制卡進行訪問,必須要為其開發(fā)驅(qū)動程序。

WDM 驅(qū)動程序是一種Pnp 驅(qū)動程序,它能夠?qū)崿F(xiàn)Windows 98 與Windows 2000 、 Windows XP 之間的源代碼級兼容。Windows 2000 性能穩(wěn)定,在調(diào)試自行開發(fā)的板卡時,仍 然是首選的操作系統(tǒng)。在Windows 2000 中,所有對驅(qū)動程序的I/O 請求都轉(zhuǎn)化為I/O 請求 包(IRP)來表示,IRP 是I/O 管理器在響應I/O 請求時從非分頁系統(tǒng)內(nèi)存中分配的一個可變 大小的數(shù)據(jù)結(jié)構(gòu),I/O 管理器負責產(chǎn)生代表一次I/O 操作的IRP,并將IRP 傳至正確的設(shè)備 驅(qū)動程序,并通過分層的驅(qū)動程序傳遞給物理設(shè)備。設(shè)備驅(qū)動程序則接收IRP,執(zhí)行相應的 操作,完成后再將IRP 傳送回I/O 管理器,表示I/O 操作的完成或者通過I/O 管理器將其傳 遞給其他的驅(qū)動程序進行進一步的處理。

3.伺服控制卡的WDM 驅(qū)動程序設(shè)計與實現(xiàn)

驅(qū)動程序的開發(fā)環(huán)境常用的有微軟的DDK、Jungo 的WinDriver 和Numega 的Driver Studio。Driver Studio 把DDK 封裝成類,包含完善的代碼生成和調(diào)試工具,并且提供對WDM 驅(qū)動的完全支持,利用它開發(fā)的核心態(tài)驅(qū)動程序運行效率也很高。本系統(tǒng)在VC 環(huán)境下利用 Driver Studio 開發(fā)驅(qū)動程序。

接口芯片 PCI9054 支持主模式、從模式和DMA 模式三種數(shù)據(jù)傳輸方式。DMA 傳輸不 通過處理器,直接進行數(shù)據(jù)交換,可以節(jié)省CPU 資源;并且DMA 模式還支持CPCI 總線與本 地總線之間的高效突發(fā)。

3.1 DMA 數(shù)據(jù)傳輸實現(xiàn)

PCI9054 集成了兩個互相獨立的DMA 通道,每一個通道由一個DMA 控制器和一個專 用雙向FIFO 組成,都支持塊DMA 和分散/集中DMA 操作,這里選用DMA 通道0,采用塊 DMA 方式實現(xiàn)傳輸。在Driver Works 中提供了三個類來實現(xiàn)DMA傳輸,分別是KDmaAdapter 類、KDmaTransfer 類和KCommonDmaBuffer 類。

3.1.1.DMA 適配器

對于DMA 傳輸,驅(qū)動程序需要創(chuàng)建一個DMA 適配器,來表明一個DMA 通道的特性 和提供串行化訪問的服務(wù)。KDmaAdapter 類實現(xiàn)對DMA 適配器的操作。在它的初始化函數(shù) Initialize(PDEVICE_DESCRIPTION pDesc,PDEVICE_OBJECT pPdo)中第一個參數(shù)是一個 DEVICE_DESCRIPTION 結(jié)構(gòu)的指針,這個參數(shù)用于對DMA 通道的屬性進行設(shè)置。

3.1.2. DMA 控制器

采用 DMA 方式時,CPU 要放棄對系統(tǒng)總線的使用權(quán),主存儲器和外部設(shè)備是被控制的對 象,它們之間沒有相互控制的能力,需要利用DMA 控制器來代替CPU 完成控制功能。

在用DriverWorks 開發(fā)驅(qū)動時, KDmaTransfer 類用于控制DMA 的傳輸;它可以啟動一個DMA 傳 輸,指定DMA 傳輸?shù)姆较颍珼MA 傳輸數(shù)據(jù)緩沖區(qū)的物理地址和要傳輸?shù)淖止?jié)數(shù)。 KDmaTransfer 類的Initiate()函數(shù)用于初始化一個KDmaTransfer 對象;在成功初始化 一個KDmaTransfer 類對象后,將會調(diào)用DMA 準備就緒回調(diào)例程OnDmaReady,在該例程中獲 取要傳輸?shù)膬?nèi)存的地址和字節(jié)數(shù),并調(diào)用StartDMA 例程開始DMA 傳輸。

與中斷結(jié)合的DMA 傳輸在一次傳輸結(jié)束后會再次調(diào)用 KDmaTransfer 類的Continue()函數(shù)發(fā)起下一次的DMA 傳輸操作,直到傳輸完成。

3.1.3. DMA 公共緩沖區(qū)

在DriverWorks 中KCommonDmaBuffer 類實現(xiàn)對公用緩沖區(qū)的操作。在實際使用時,聲 明一個KCommonDmaBuffer 類對象并初始化。在傳輸結(jié)束后,釋放公共緩沖區(qū),以防止內(nèi)存 丟失。

3.1.4. 寄存器設(shè)置

PCI9054 在DMA 模式下傳輸,驅(qū)動程序要通過I/O 指令設(shè)置DMA 控制器內(nèi)部的寄存器 以實現(xiàn)兩總線間的數(shù)據(jù)傳送,需要設(shè)置的內(nèi)部寄存器及其具體功能如下表1 所示:

CPCI技術(shù)下對伺服卡WDM設(shè)計與研究

3.2 驅(qū)動開發(fā)中的中斷處理機制及實現(xiàn)

本系統(tǒng)的驅(qū)動程序采用塊DMA 與中斷結(jié)合的方式來實現(xiàn)主機與伺服控制卡之間的數(shù) 據(jù)傳輸。以讀操作為例,每次DMA 傳輸完后,都會產(chǎn)生一個DMA 中斷,中斷處理程序應 答中斷,并獲取公共緩沖區(qū)中的數(shù)據(jù),通知主機端有數(shù)據(jù)到達;可以看出,高效的DMA 處 理依賴于高效的中斷處理過程。

中斷處理完成 CPU 與I/O 設(shè)備之間的信息交換,在為硬件板卡開發(fā)驅(qū)動程序時需要為 中斷配置相應的驅(qū)動處理。在處理中斷之前要對中斷資源進行配置,首先定義并初始化一個 中斷對象,在初始化階段,提取IRP 資源中的中斷級別、中斷模式、中斷向量、共享模式 等信息。利用上面獲得的參數(shù)來連接中斷,連接中斷操作的主要目的是注冊設(shè)備驅(qū)動的中斷 服務(wù)例程(ISR),以便在中斷發(fā)生后中斷服務(wù)例程能夠被調(diào)用。在DriverWorks 中用KInterrupt 類實現(xiàn)對硬件中斷的處理。

status = m_Irq.InitializeAndConnect(pResListTranslated, LinkTo(Isr_Irq), this)

當硬件發(fā)生中斷時,硬件抽象層(HAL)把中斷級別(IRQL)提升到合適的中斷級別, 然后調(diào)用中斷服務(wù)例程(ISR)。CPCI 總線是中斷共享的,因此,ISR 首先確定是哪一個設(shè) 備發(fā)生了中斷, 如果不是當前設(shè)備的中斷,立即返回FALSE ,以便HAL 把中斷發(fā)送給其 他設(shè)備的驅(qū)動程序。如果是當前設(shè)備的中斷,則在清除該中斷,并做相應的處理。中斷處理 的整個過程如下圖2 所示:

ISR 執(zhí)行在高于DISPATCH_LEVEL 的IRQL 上,它凍結(jié)了其CPU 上所有低于或等于該 IRQL 上的其他活動,為了提高系統(tǒng)性能,ISR 例程應該盡可能快的完成;此外,ISR 中使 用的所有代碼和數(shù)據(jù)必須存在于非分頁內(nèi)存中,能調(diào)用的內(nèi)核模式函數(shù)也十分有限。

CPCI技術(shù)下對伺服卡WDM設(shè)計與研究
圖2:中斷處理流程圖

Windows 2000 提供了延遲過程調(diào)用(DPC)機制來解決這個問題,ISR 決定當前請求的 完成并請求一個DPC,之后,內(nèi)核在DISPATCH_LEVEL 級上調(diào)用這個DPC 例程。當有當 前設(shè)備的中斷到來時,把一個DPC 插入到DPC 隊列中。實現(xiàn)代碼如下:

m_DpcFor_Irq.Setup(LinkTo(DpcFor_Irq), this);//創(chuàng)建一個DPC m_DpcFor_Irq.Request(NULL, NULL)// 把一個DPC 插入到DPC 隊列等待執(zhí)行

4. 應用程序與驅(qū)動程序的通信

4.1 通信的實現(xiàn)策略

應用程序采用Win32 事件通知的方式與驅(qū)動程序進行通信:應用程序調(diào)用API 函數(shù) CreatFile 打開設(shè)備,調(diào)用CreateEvent 創(chuàng)建事件句柄hEvent 并置為無信號態(tài),把hEvent 作為 函數(shù)DeviceIoControl 的參數(shù)傳遞給驅(qū)動程序,同時調(diào)用CreateThread 創(chuàng)建等待線程;WDM 驅(qū)動程序接收事件句柄hEven,初始化KEvent 類對象m_hEvent,當中斷發(fā)生時,在DPC 中 執(zhí)行m_hEvent-》Set(),將事件設(shè)置為信號態(tài),喚醒應用程序中的等待線程,然后調(diào)用 DeviceIoControl 完成數(shù)據(jù)傳輸。

4.2 數(shù)據(jù)傳輸速率測量

在實際測量時,采用了硬件測量法,應用程序不斷向DSP 處理卡發(fā)送數(shù)據(jù)/接收數(shù)據(jù), 利用示波器來觀測BLAST#和ADS#信號的變化周期,得出每組數(shù)據(jù)的傳輸時間。該DSP 卡本地端總線為8 位,在DMA 模式下,測得的發(fā)送/接收時的測量結(jié)果如下表2 所示:

CPCI技術(shù)下對伺服卡WDM設(shè)計與研究

從以上結(jié)果可以看出,無限突發(fā) DMA 模式傳輸速率最高,可達26.3Mbyte/s,若本地端總線 為32 位,則數(shù)據(jù)傳輸速率可以達到26.3*4=105.2Mbyte/s ,接近32 位PCI 總線的極限傳輸速率133Mbyte/s,能夠滿足大部分高速數(shù)據(jù)傳輸要求。

結(jié)束語

自行開發(fā)的伺服控制卡,基于高速的CPCI 總線,以DSP 作為卡上處理器,以FPGA 實現(xiàn)邏輯處理,能夠作為一個獨立的單元替代原來的工控機子系統(tǒng),大大簡化了當前光電子 學系統(tǒng)結(jié)構(gòu);利用Driver Studio 為其開發(fā)的底層驅(qū)動程序,能使板卡在Windows2000 下穩(wěn) 定地工作,在與中斷結(jié)合的DMA 數(shù)據(jù)傳輸模式下,數(shù)據(jù)傳輸速率能夠滿足伺服控制卡的精 度和實時性要求。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • WDM
    WDM
    +關(guān)注

    關(guān)注

    1

    文章

    111

    瀏覽量

    21979
  • CPCI
    +關(guān)注

    關(guān)注

    7

    文章

    74

    瀏覽量

    33966
  • 伺服卡
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    7542
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    TFF型WDM器件技術(shù)原理

    `我們知道,光纖通信是技術(shù)是實現(xiàn)互聯(lián)網(wǎng)并改變世界的關(guān)鍵技術(shù)之一,光纖通信的一個優(yōu)勢是可以在一根光纖中同時傳輸數(shù)十個波長,稱作波分復用(WDM)。WDM傳輸?shù)幕驹枪鈱W濾波器,可通過
    發(fā)表于 05-18 18:00

    怎么實現(xiàn)基于CPCI總線的多網(wǎng)口設(shè)計?

    怎么實現(xiàn)基于CPCI總線的多網(wǎng)口設(shè)計?
    發(fā)表于 06-02 06:15

    WINDOWSPCI接口WDM驅(qū)動程序的DMA編程技術(shù)

    本文主要討論了在Windows環(huán)境開發(fā)PCI接口DMA應用的WDM編程技術(shù),并給出了一個應用DriverWorks和VC++開發(fā)的實例程序代碼。現(xiàn)化微機的擴展槽通常有ISA總線和P
    發(fā)表于 08-07 08:37 ?28次下載

    基于CPCI伺服的DMA和中斷研究

    為簡化當前光電設(shè)備電子學系統(tǒng)的結(jié)構(gòu),本文提出了基于CPCI 總線,以DSP 和FPGA 為控制核心的伺服控制結(jié)構(gòu),來取代原來的控制子系統(tǒng);在Windows 2000 ,利用Driv
    發(fā)表于 08-17 09:25 ?20次下載

    Windows環(huán)境開發(fā)PCI接口DMA應用的WDM編程技

    本文主要討論了在Windows環(huán)境開發(fā)PCI接口DMA應用的WDM編程技術(shù),并給出了一個應用DriverWorks和VC++開發(fā)的實例程序代碼。關(guān)鍵詞:Windows、PCI總線、
    發(fā)表于 10-06 10:14 ?24次下載

    基于CPCI總線的伺服控制的設(shè)計和實現(xiàn)

    CPCI 總線是一種兼容性強、功能全面的計算機總線。文章通過對TI 公司推出的DSP 芯片(TMS320F2812)、FPGA 芯片(EPF10K30A)和CPCI 接口芯片(PCI9054)的功能和特點的深入分析,討論了
    發(fā)表于 12-19 12:08 ?35次下載

    WDM/DWDM技術(shù),什么是WDM/DWDM技術(shù)

    WDM/DWDM技術(shù),什么是WDM/DWDM技術(shù) 波分復用(WDM)是將兩種或多種不同波長的光載波信號(攜帶各種信息)在發(fā)送端經(jīng)復用器(亦
    發(fā)表于 04-07 16:06 ?9339次閱讀

    基于CPCI總線的多網(wǎng)口設(shè)計

      以太網(wǎng)(Ethernet)作為應用最廣泛的局域網(wǎng)技術(shù)異軍突起,已經(jīng)迅速走向工業(yè)自動化控制領(lǐng)域的前臺。CPCI總線系統(tǒng)插槽有限,設(shè)計基于CPCI總線的多網(wǎng)口可節(jié)省空間,又可以滿
    發(fā)表于 09-10 09:56 ?2067次閱讀
    基于<b class='flag-5'>CPCI</b>總線的多網(wǎng)口<b class='flag-5'>卡</b>設(shè)計

    Windows 2000WDM驅(qū)動程序的研究與開發(fā)

    本文分析研究了 Windows 2000 WDM 驅(qū)動程序的基本原理。以 Microsoft 的 DDK 為開發(fā)工具,開發(fā)了基于 PCI 總線的通信接口板的 WDM 驅(qū)動程序。證實
    發(fā)表于 04-18 10:02 ?0次下載

    CPCI 接口反射內(nèi)存

    CPCI接口反射內(nèi)存是一種用于實時網(wǎng)絡(luò)的硬件設(shè)備,它將反射內(nèi)存集成在上,通過計算機的CPCI(CompactPCI)插槽與計算機連接。CPCI
    的頭像 發(fā)表于 09-05 17:42 ?1206次閱讀
    <b class='flag-5'>CPCI</b> 接口反射內(nèi)存<b class='flag-5'>卡</b>

    解析XMC轉(zhuǎn)CPCI載板轉(zhuǎn)接:連接不同接口的關(guān)鍵紐帶

    XMC轉(zhuǎn)CPCI載板轉(zhuǎn)接 CPCI2XMC轉(zhuǎn)接
    發(fā)表于 09-06 14:37 ?0次下載

    pmc轉(zhuǎn)cpci載板轉(zhuǎn)接

    電子發(fā)燒友網(wǎng)站提供《pmc轉(zhuǎn)cpci載板轉(zhuǎn)接.docx》資料免費下載
    發(fā)表于 09-06 14:36 ?0次下載

    CPCI轉(zhuǎn)PCI載板轉(zhuǎn)接

    CPCI轉(zhuǎn)PCI載板轉(zhuǎn)接 ?
    發(fā)表于 09-07 09:37 ?1次下載

    CPCI轉(zhuǎn)PCI載板轉(zhuǎn)接 PCI2CPCI

    # 深入剖析 PCI 轉(zhuǎn) CPCI 載板轉(zhuǎn)接:連接不同架構(gòu)的橋梁? 在計算機技術(shù)不斷發(fā)展的進程中,硬件接口的多樣性和演進促使了各種轉(zhuǎn)接的出現(xiàn),以滿足不同接口標準之間的連接和通信需求
    的頭像 發(fā)表于 10-09 15:21 ?1443次閱讀
    <b class='flag-5'>CPCI</b>轉(zhuǎn)PCI載板轉(zhuǎn)接<b class='flag-5'>卡</b> PCI2<b class='flag-5'>CPCI</b>

    XMC 轉(zhuǎn) CPCI 載板轉(zhuǎn)接

    XMC 轉(zhuǎn) CPCI 載板轉(zhuǎn)接是一種用于實現(xiàn) XMC(Extended Mezzanine Card)接口與 CPCI(CompactPCI)接口相互轉(zhuǎn)換和連接的硬件設(shè)備14。以下是關(guān)于它的一些
    的頭像 發(fā)表于 10-09 16:03 ?1178次閱讀