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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA的PCIE總線擴(kuò)展卡的設(shè)計(jì)

          基于FPGA的PCIE總線擴(kuò)展卡的設(shè)計(jì)

          作者: 時(shí)間:2010-10-11 來(lái)源:網(wǎng)絡(luò) 收藏


          本文引用地址:http://www.ex-cimer.com/article/151439.htm

            控制區(qū)域中含有一些控制信息,其中第16位用來(lái)控制傳輸方向,為O是DMA寫(xiě),為1是DMA讀,這里的讀/寫(xiě)是以主機(jī)端為參考的,如果以核為參考,方向剛好相反。第18位用來(lái)使能DMA傳輸計(jì)數(shù),如果該位使能為1,那么在DMA傳輸過(guò)程中,核每完成1次DMA操作,都會(huì)進(jìn)行1次計(jì)數(shù)操作,然后把這個(gè)計(jì)數(shù)結(jié)果傳送給主機(jī),主機(jī)把這個(gè)結(jié)果填寫(xiě)到描述符表的RCLAST字段中。

            表大小是指本次鏈?zhǔn)紻MA操作對(duì)應(yīng)的描述符個(gè)數(shù),每個(gè)描述符對(duì)應(yīng)一次DMA操作。

            RCLAST是一個(gè)計(jì)數(shù)單元,它有兩個(gè)作用,在鏈?zhǔn)紻MA傳輸前,表示還有多少個(gè)DMA操作等待傳輸,由于它是從0開(kāi)始計(jì)數(shù)的,所以這個(gè)值等于表大小減1。還有一個(gè)重要作用是在鏈?zhǔn)紻MA傳輸過(guò)程中,用來(lái)表示鏈?zhǔn)紻MA傳輸?shù)臓顟B(tài)。如上所述,如果控制區(qū)域的第18位設(shè)置為1,那么每完成1次DMA操作,主機(jī)都會(huì)更新這個(gè)計(jì)數(shù)器。當(dāng)計(jì)數(shù)器的數(shù)值(也是從O開(kāi)始計(jì)數(shù)的)等于前面設(shè)置的期望傳輸?shù)腄MA次數(shù),就表示鏈?zhǔn)紻MA傳輸操作結(jié)束。開(kāi)發(fā)人員可以用這個(gè)狀態(tài)單元來(lái)察看本次傳輸是否結(jié)束,從而開(kāi)始一個(gè)新的傳輸周期。

            DMA長(zhǎng)度用來(lái)設(shè)置本描述符對(duì)應(yīng)的DMA傳輸?shù)拈L(zhǎng)度,是以32位為單位的。主機(jī)端地址用來(lái)指示數(shù)據(jù)存放存放的位置。

            3. 2 實(shí)現(xiàn)范例

            根據(jù)上面介紹的描述符表,下面給出一個(gè)鏈?zhǔn)紻MA讀的驅(qū)動(dòng)程序例子。首先生成一個(gè)描述符表,然后把描述符表表頭的4個(gè)字段的內(nèi)容分別寫(xiě)入BAR2地址偏移量為0x0,0x4,0x8和0xC寄存器中。寫(xiě)完后即開(kāi)始此次鏈?zhǔn)紻MA讀傳輸,while循環(huán)用于等待鏈?zhǔn)紻MA結(jié)束。從下面的代碼可以看出,2個(gè)描述符對(duì)應(yīng)2次DMA操作。

            



          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();