色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

CPCI技術下對伺服卡WDM設計與研究

電子設計 ? 作者:工程師 ? 2018-10-08 14:36 ? 次閱讀

引言

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

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

1.伺服控制卡的系統結構與硬件實現方案

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

CPCI技術下對伺服卡WDM設計與研究
圖 1 伺服控制卡硬件結構圖

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

FPGA 通過2812 的外部中斷XINT1 和XINT2 來觸發2812 接收控制命令和參數,2812 接收 到命令后,根據自身定義的工作協議進入相應的工作狀態。

系統設計中采用 PLX 公司的PCI9054 作為總線接口芯片,實現CPCI 局部總線與FPGA 的通信。PCI9054 采用C 模式,在該模式下,PCI 的數據線與地址線是非復用的,設計時只 需關注9054 的本地端總線。

2.WDM 驅動程序設計

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

WDM 驅動程序是一種Pnp 驅動程序,它能夠實現Windows 98 與Windows 2000 、 Windows XP 之間的源代碼級兼容。Windows 2000 性能穩定,在調試自行開發的板卡時,仍 然是首選的操作系統。在Windows 2000 中,所有對驅動程序的I/O 請求都轉化為I/O 請求 包(IRP)來表示,IRP 是I/O 管理器在響應I/O 請求時從非分頁系統內存中分配的一個可變 大小的數據結構,I/O 管理器負責產生代表一次I/O 操作的IRP,并將IRP 傳至正確的設備 驅動程序,并通過分層的驅動程序傳遞給物理設備。設備驅動程序則接收IRP,執行相應的 操作,完成后再將IRP 傳送回I/O 管理器,表示I/O 操作的完成或者通過I/O 管理器將其傳 遞給其他的驅動程序進行進一步的處理。

3.伺服控制卡的WDM 驅動程序設計與實現

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

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

3.1 DMA 數據傳輸實現

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

3.1.1.DMA 適配器

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

3.1.2. DMA 控制器

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

在用DriverWorks 開發驅動時, KDmaTransfer 類用于控制DMA 的傳輸;它可以啟動一個DMA 傳 輸,指定DMA 傳輸的方向,DMA 傳輸數據緩沖區的物理地址和要傳輸的字節數。 KDmaTransfer 類的Initiate()函數用于初始化一個KDmaTransfer 對象;在成功初始化 一個KDmaTransfer 類對象后,將會調用DMA 準備就緒回調例程OnDmaReady,在該例程中獲 取要傳輸的內存的地址和字節數,并調用StartDMA 例程開始DMA 傳輸。

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

3.1.3. DMA 公共緩沖區

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

3.1.4. 寄存器設置

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

CPCI技術下對伺服卡WDM設計與研究

3.2 驅動開發中的中斷處理機制及實現

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

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

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

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

ISR 執行在高于DISPATCH_LEVEL 的IRQL 上,它凍結了其CPU 上所有低于或等于該 IRQL 上的其他活動,為了提高系統性能,ISR 例程應該盡可能快的完成;此外,ISR 中使 用的所有代碼和數據必須存在于非分頁內存中,能調用的內核模式函數也十分有限。

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

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

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

4. 應用程序與驅動程序的通信

4.1 通信的實現策略

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

4.2 數據傳輸速率測量

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

CPCI技術下對伺服卡WDM設計與研究

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

結束語

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

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

    關注

    1

    文章

    109

    瀏覽量

    20991
  • CPCI
    +關注

    關注

    6

    文章

    70

    瀏覽量

    32829
  • 伺服卡
    +關注

    關注

    0

    文章

    2

    瀏覽量

    7448
收藏 人收藏

    評論

    相關推薦

    TFF型WDM器件技術原理

    `我們知道,光纖通信是技術是實現互聯網并改變世界的關鍵技術之一,光纖通信的一個優勢是可以在一根光纖中同時傳輸數十個波長,稱作波分復用(WDM)。WDM傳輸的基本元件是光學濾波器,可通過
    發表于 05-18 18:00

    怎么實現基于CPCI總線的多網口設計?

    怎么實現基于CPCI總線的多網口設計?
    發表于 06-02 06:15

    WINDOWSPCI接口WDM驅動程序的DMA編程技術

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

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

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

    Windows環境開發PCI接口DMA應用的WDM編程技

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

    基于CPCI總線的伺服控制的設計和實現

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

    WDM/DWDM技術,什么是WDM/DWDM技術

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

    基于CPCI總線的多網口設計

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

    Windows 2000WDM驅動程序的研究與開發

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

    CPCI 接口反射內存

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

    解析XMC轉CPCI載板轉接:連接不同接口的關鍵紐帶

    XMC轉CPCI載板轉接 CPCI2XMC轉接
    發表于 09-06 14:37 ?0次下載

    pmc轉cpci載板轉接

    電子發燒友網站提供《pmc轉cpci載板轉接.docx》資料免費下載
    發表于 09-06 14:36 ?0次下載

    CPCI轉PCI載板轉接

    CPCI轉PCI載板轉接 ?
    發表于 09-07 09:37 ?1次下載

    CPCI轉PCI載板轉接 PCI2CPCI

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

    XMC 轉 CPCI 載板轉接

    XMC 轉 CPCI 載板轉接是一種用于實現 XMC(Extended Mezzanine Card)接口與 CPCI(CompactPCI)接口相互轉換和連接的硬件設備14。以下是關于它的一些
    的頭像 發表于 10-09 16:03 ?203次閱讀
    主站蜘蛛池模板: 国产成人免费手机在线观看视频| 日韩久久影院| 伊人久久国产免费观看视频| 国产精品亚洲AV色欲在线观看 | 国产永久免费高清在线观看| 日韩欧美一级| 菠萝菠萝蜜免费播放高清| 女人 我狠狠疼你| 18禁在线无遮挡羞羞漫画 | 草莓视频cm.888tw| 欧美牲交A欧美牲交| 99视频国产在线| 男人的天堂黄色片| 99热在线观看精品| 免费完整版观看| 99久久re6热精品首页| 亚洲精品乱码8久久久久久日本| 公交车轮C关老师| 日本熟妇乱妇熟色在线电影| 扒开老师粉嫩的泬10P| 秋霞三级理伦免费观看| sm主人调教揉花蒂H| 秋霞电影网午夜鲁丝片无码| G国产精品无马| 日本成熟bbxxxxxxxx| 超碰97人在线视频| 日韩精品一区VR观看| 国产 亚洲 中文在线 字幕| 少妇无码太爽了视频在线播放 | 日本午夜看x费免| 粗大分开挺进内射| 宿舍BL 纯肉各种PLAY H| 国产精品久久久久久52AVAV| 无限资源在线观看8| 国产亚洲精品久久久久久久| 国产免费人成在线视频视频| 色综合久久五月| 国产色青青视频在线观看| 亚洲免费va在线观看| 久久99国产精品二区不卡| 中国午夜伦理片|