新聞中心

        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操作。

          



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 台中县| 米脂县| 富顺县| 资源县| 台东市| 隆德县| 汕尾市| 涞水县| 罗定市| 庆城县| 上饶县| 金堂县| 锦屏县| 赫章县| 东莞市| 桑日县| 三江| 通海县| 陆丰市| 苍梧县| 贵溪市| 南靖县| 涞源县| 通海县| 安溪县| 定西市| 吴川市| 化隆| 汝城县| 朔州市| 惠东县| 历史| 商河县| 满城县| 江山市| 会泽县| 和政县| 承德县| 东光县| 海林市| 崇明县|