新聞中心

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

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

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

         (PCI express)是用來互聯諸如計算機和通信平臺應用中外圍設備的第三代高性能I/0體系結構繼承了第二代體系結構最有用的特點,采用與PCI相同的使用模型和讀/寫通信模型,支持各種常見的事務。其存儲器、I/0和配置地址空間與PCI的地址空間相同。由于地址空間模型沒有變化,所以現有的OS和驅動軟件無需進行修改就可以在系統上運行。

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

          PCIE是串行協議,與原有的PCI并行相比,它沒有大量的數據和控制線,對于硬件電路者來說,省去了很多硬件工作。PCIE的傳輸速度遠遠大于PCI總線,PCIE1.1版本單個鏈路的單向吞吐量能達到250 MB/s。對于需要與主機進行大容量傳輸的系統來說,該總線標準的優勢是非常明顯的。

          由于PCIE總線硬件簡單,吞吐量大,軟件向下兼容,只要找到合適的總線接口芯片,很容易將現有的PCI總線設備升級為PCIExpress設備。Altera公司最新推出的EP2SGX90系列的芯片,給用戶提供了PCIE接口IP核。本文將結合實際的應用,詳細介紹該IP核的使用情況,包括寄存器設置,DMA操作等。

          1 功能描述及參數設置

          按照PCIE協議的要求,該的IP核也采用三層體系結構,即傳輸層、數據鏈路層和物理層。這三層功能模塊完成了PCIE的協議轉換,在傳輸層上給開發人員提供了非常豐富的接口。開發人員的所有開發,包括DMA傳輸等都是在傳輸層以上進行的。

          傳輸層(transaction layer):完成TLP(數據傳輸包)的收發,含有虛擬信道(VC)緩沖區,具有端口仲裁、VC仲裁、流控制、數據重新排序和數據校驗等功能。

          數據鏈路層(data link layer):數據鏈路層的主要功能是保證在各鏈路上發送和接收數據包時數據的完整性。在接收端,對數據進行嚴格的CRC校驗,如果有錯誤,會給發送方返回1個NAK信號。發送端具有重傳緩沖區,如果收到NAK信號,則把數據重新發送1次。

          物理層(physical layer):對于發送端,接收數據鏈路層的數據包,把這些數據進行8 b/10 b編碼,送到串行發送器上;對于接收端則剛好相反,收到串行碼后,先解碼,然后送給數據鏈路層。

          在生成PCIE的IP核時,至少選擇2個存儲區,一個是BAR[1:O],用作用戶開發板的存儲區用;還有一個是BAR2,下面所有的寄存器操作都是該地址的。新生成的IP核不帶有DMA功能,但是在工程文件夾下面有一個xxxx_examples(xxx代表工程名稱)的文件夾,文件夾里有簡單DMA和鏈式DMA的例子代碼,開發者只需要對這些代碼進行修改,就能開發出適合自己的DMA功能模塊。

          2 簡單DMA

          該DMA傳輸模式相對比較簡單,只需要對相應的寄存器進行設置即可完成,DMA傳輸步驟如下所示,每進行1次DMA傳輸,都需要按照下面的步驟進行1次設置。下面所述的偏移量都是相對于BAR2地址。

          (1)設置偏移量為0x00和0x04的寄存器,寫入DMA傳輸的主機端地址;

          (2)設置偏移量為0x14的寄存器,寫入DMA傳輸的PCIE端點地址;

          (3)在偏移量為0x08的寄存器中寫入本次DMA傳輸的長度,以字節為單位;

          (4)設置偏移量為0x0C的寄存器,設置DMA傳輸的屬性,對該寄存器的寫操作將啟動本次DMA傳輸;

          (5)讀取0x0C的寄存器DMA傳輸狀態位,察看本次DMA是否完成。

          3 鏈式DMA

          鏈式DMA是一種效率遠遠高于簡單DMA的傳輸方式,它只需要1次啟動操作,就可以完成多次DMA傳輸。這里將結合實際使用情況,詳細介紹鏈式DMA的傳輸過程。

          3.1 描述符表

          實現鏈式DMA傳輸時,需要開發人員在主機內存中開辟一塊空間,用來存儲描述符表,它由一個表頭和多個描述符組成,其中每一個描述符對應一次DMA操作。用戶根據自己的需求填寫該描述符表,關于該描述符表的詳細說明如表1和表2所示。

          

        鏈式DMA描述附表 www.elecfans.com
        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 沁阳市| 阿拉善左旗| 柯坪县| 陆川县| 鹤壁市| 临城县| 桑日县| 额济纳旗| 阿坝| 大安市| 四川省| 皋兰县| 连城县| 花垣县| 留坝县| 凤山市| 普兰店市| 荣昌县| 西充县| 宜城市| 石城县| 宝应县| 宿迁市| 吉木萨尔县| 凤阳县| 科尔| 平利县| 罗田县| 准格尔旗| 嵩明县| 鄂托克前旗| 东乌珠穆沁旗| 和顺县| 张家口市| 色达县| 晋州市| 永寿县| 乡宁县| 徐州市| 格尔木市| 海兴县|