新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于FPGA的PCIE總線擴展卡的設計

        基于FPGA的PCIE總線擴展卡的設計

        作者: 時間:2010-10-11 來源:網絡 收藏


        本文引用地址:http://www.104case.com/article/151439.htm

          控制區域中含有一些控制信息,其中第16位用來控制傳輸方向,為O是DMA寫,為1是DMA讀,這里的讀/寫是以主機端為參考的,如果以核為參考,方向剛好相反。第18位用來使能DMA傳輸計數,如果該位使能為1,那么在DMA傳輸過程中,核每完成1次DMA操作,都會進行1次計數操作,然后把這個計數結果傳送給主機,主機把這個結果填寫到描述符表的RCLAST字段中。

          表大小是指本次鏈式DMA操作對應的描述符個數,每個描述符對應一次DMA操作。

          RCLAST是一個計數單元,它有兩個作用,在鏈式DMA傳輸前,表示還有多少個DMA操作等待傳輸,由于它是從0開始計數的,所以這個值等于表大小減1。還有一個重要作用是在鏈式DMA傳輸過程中,用來表示鏈式DMA傳輸的狀態。如上所述,如果控制區域的第18位設置為1,那么每完成1次DMA操作,主機都會更新這個計數器。當計數器的數值(也是從O開始計數的)等于前面設置的期望傳輸的DMA次數,就表示鏈式DMA傳輸操作結束。開發人員可以用這個狀態單元來察看本次傳輸是否結束,從而開始一個新的傳輸周期。

          DMA長度用來設置本描述符對應的DMA傳輸的長度,是以32位為單位的。主機端地址用來指示數據存放存放的位置。

          3. 2 實現范例

          根據上面介紹的描述符表,下面給出一個鏈式DMA讀的驅動程序例子。首先生成一個描述符表,然后把描述符表表頭的4個字段的內容分別寫入BAR2地址偏移量為0x0,0x4,0x8和0xC寄存器中。寫完后即開始此次鏈式DMA讀傳輸,while循環用于等待鏈式DMA結束。從下面的代碼可以看出,2個描述符對應2次DMA操作。

          



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 长泰县| 渑池县| 滦平县| 玉树县| 漳平市| 大足县| 壶关县| 敦化市| 新津县| 永年县| 许昌县| 宽甸| 乐陵市| 威信县| 玉屏| 肃宁县| 大宁县| 盱眙县| 大埔县| 密云县| 怀柔区| 屏东市| 彰化县| 黔东| 于田县| 威信县| 桐梓县| 清远市| 洪湖市| 邓州市| 高邮市| 岫岩| 奉节县| 安达市| 日喀则市| 景洪市| 界首市| 镇原县| 灵山县| 秦皇岛市| 湖北省|