<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于PCIE總線的多DSP系統(tǒng)接口設(shè)計(jì)和驅(qū)動開發(fā)

          基于PCIE總線的多DSP系統(tǒng)接口設(shè)計(jì)和驅(qū)動開發(fā)

          作者: 時間:2012-07-13 來源:網(wǎng)絡(luò) 收藏
          3.2 應(yīng)用程序和驅(qū)動程序的通信方法
          應(yīng)用程序可以用標(biāo)準(zhǔn)的Win32API函數(shù)與驅(qū)動程序建立通信。在應(yīng)用程序中首先用設(shè)備GUID接口或符號鏈接名打開設(shè)備,實(shí)際上應(yīng)用程序調(diào)用了Win32API函數(shù)CreateFile。若成功打開將返回設(shè)備的有效句柄,應(yīng)用程序獲得有效句柄后就可以和驅(qū)動程序交換數(shù)據(jù)。打開設(shè)備后應(yīng)用程序可以用函數(shù)DevieeloControl與驅(qū)動程序通信,這個函數(shù)包括從驅(qū)動程序讀數(shù)據(jù)和寫數(shù)據(jù)。完成硬件操作后用CloseHandle函數(shù)關(guān)閉該設(shè)備。
          3.3 PCI Express總線介紹
          是Intel公司提出的第3代I/O總線。采用雙工串行傳輸模式,速度快,低功耗,擴(kuò)展靈活,軟件層與PCI兼容,具有數(shù)據(jù)包和層協(xié)議架構(gòu)。

          c.JPG


          PCI Express協(xié)議定義了4層結(jié)構(gòu):物理層,數(shù)據(jù)鏈路層和事務(wù)處理層,軟件層。PCI Express系統(tǒng)體系結(jié)構(gòu)如圖3所示。每個層次按照協(xié)議中規(guī)定的內(nèi)容,完成相應(yīng)的數(shù)據(jù)處理功能。PCIE軟件層保持與PCI總線兼容,軟件兼容包括器件的初始化、自動配置和器件的運(yùn)行。事務(wù)處理層接收來自軟件層或應(yīng)用層的讀寫請求,并構(gòu)造響應(yīng)數(shù)據(jù)包并傳給數(shù)據(jù)鏈路層。數(shù)據(jù)鏈路層的主要作用是確保數(shù)據(jù)鏈路包在數(shù)據(jù)鏈路層上的可靠傳送。物理層負(fù)責(zé)接口和設(shè)備間的連接,它在兩個PCI Express模塊之間的鏈路層間傳輸數(shù)據(jù)包。
          3.4 驅(qū)動開發(fā)實(shí)例
          3.4.1 PCIE接口模塊
          PCI Express接口模塊通過調(diào)用IP核技術(shù)實(shí)現(xiàn),它接口模塊的結(jié)構(gòu)如圖4所示。PCI Express通信協(xié)議以及DMA的實(shí)現(xiàn)等是在FPGA內(nèi)實(shí)現(xiàn)的,整個模塊用到了Hard IP核和DMA IP核。

          d.JPG


          Hard IP核用來處理PCI Express協(xié)議相關(guān)的事務(wù);DMAIP核用作DMA控制器;DMA控制器通過控制與DMA相關(guān)的寄存器,設(shè)定讀寫操作的地址范圍和大小,來完成DMA數(shù)據(jù)讀寫操作。DMA管理模塊控制兩個獨(dú)立的DMA通道,分別用來從主機(jī)內(nèi)存讀取數(shù)據(jù)和將數(shù)據(jù)寫入主機(jī)內(nèi)存。



          關(guān)鍵詞: PCIE總線 DSP系統(tǒng) WDM

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();