《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 基于FPGA的PCI Express總線接口設計
基于FPGA的PCI Express總線接口設計
摘要: 使用FPGA來設計PCIE總線擴展卡,可以省去專用的PCIE接口芯片,降低了硬件設計成本,提高了硬件的集成度。利用FPGA的可編程特性,大大提高了設計靈活性、適應性和可擴展性。
Abstract:
Key words :

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

 

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

 

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

 

  1 功能描述及參數設置

 

  按照PCIE協議的要求,該FPGA的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傳輸時用來存儲描述符表說明圖
鏈式DMA傳輸時用來存儲描述符表說明圖

 

 控制區域中含有一些控制信息,其中第16位用來控制傳輸方向,為O是DMA寫,為1是DMA讀,這里的讀/寫是以主機端為參考的,如果以PCIE核為參考,方向剛好相反。第18位用來使能DMA傳輸計數,如果該位使能為1,那么在DMA傳輸過程中,PCIE核每完成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操作。

 

 

鏈式DMA讀的驅動程序
鏈式DMA讀的驅動程序

 

 

鏈式DMA讀的驅動程序
鏈式DMA讀的驅動程序

 

 圖1是用SignalTap工具獲取的鏈式DMA讀時序圖。PCIE核接收tx_req0請求信號,然后給出一個tx_ack0,同時將tx_dr0置為有效,該信號套住的TXData就是需要讀取的有效數據。在每次DMA結束之后,PCIE核都會用同樣的控制邏輯給主機傳送1個已完成DMA次數的狀態字,如圖1中的44040000h。

鏈式DMA傳輸時序圖

鏈式DMA傳輸時序圖

 

 4 性能測試

 

  在做總線性能測試時,采用鏈式DMA傳輸方式,共4個描述符表。根據實際使用的PCIE總線通道數和DMA長度的不同,實際測試得到的總線速度也不同,表3給出了參考數據。

 

 

總線性能測試圖
總線性能測試圖

 

  5 結語

 

  使用FPGA來設計PCIE總線擴展卡,可以省去專用的PCIE接口芯片,降低了硬件設計成本,提高了硬件的集成度。利用FPGA的可編程特性,大大提高了設計靈活性、適應性和可擴展性。PCIE總線提供了高速、獨享的數據交換通道,確保在大數據量的數據交換時不會出現瓶頸,而且作為新一代總線,它使系統在獲得更高性能的同時,具有了良好的升級性。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美日韩久久不卡| 在线日韩av| 欧美不卡一区| 久久xxxx| 久久av一区二区三区漫画| 亚洲一区在线看| 亚洲性视频网址| 亚洲天堂网在线观看| 一本色道久久综合亚洲91| 亚洲免费观看在线观看| 日韩一级在线| 日韩一级黄色大片| 一区二区三区四区五区在线| 亚洲乱码国产乱码精品精天堂| 亚洲欧洲精品一区二区| 91久久综合| 亚洲精品国产精品乱码不99 | 亚洲免费电影在线| 亚洲精品国精品久久99热| 亚洲欧洲日夜超级视频| 91久久综合| 日韩一级成人av| 亚洲无毛电影| 午夜久久久久| 欧美综合国产| 久久综合九色综合欧美狠狠| 美女久久一区| 欧美精品一区二区三区久久久竹菊| 欧美精选在线| 欧美性jizz18性欧美| 国产精品亚洲成人| 国内一区二区在线视频观看| 影音先锋在线一区| 亚洲精品美女在线观看| 一区二区三区福利| 亚洲欧美成人一区二区在线电影| 午夜精品亚洲一区二区三区嫩草| 欧美在线免费观看亚洲| 亚洲高清在线观看一区| 亚洲精品日韩激情在线电影| 亚洲婷婷综合色高清在线| 欧美一区二区三区精品| 老鸭窝毛片一区二区三区| 欧美理论视频| 国产欧美视频一区二区三区| 狠狠噜噜久久| 日韩一区二区免费高清| 亚洲欧美在线另类| 亚洲人在线视频| 亚洲影视综合| 久久久久久久久蜜桃| 欧美高清在线一区| 国产精品久久一卡二卡| 国内久久婷婷综合| 日韩午夜在线视频| 欧美一区二区女人| 亚洲美女色禁图| 欧美一区二区三区的| 欧美大片一区| 国产精品视频自拍| 亚洲第一偷拍| 亚洲小说春色综合另类电影| 亚洲二区在线| 亚洲自拍16p| 久久综合网色—综合色88| 欧美视频一区二区三区四区| 国内精品久久久久伊人av| 日韩亚洲欧美中文三级| 欧美在线一二三区| 亚洲一二三四久久| 乱人伦精品视频在线观看| 欧美性片在线观看| 在线观看欧美一区| 亚洲综合大片69999| 亚洲欧洲精品一区二区| 欧美一区二区久久久| 欧美精品www| 国产午夜精品一区二区三区视频 | 日韩天堂在线视频| 久久精品国产免费看久久精品| 一本色道久久88综合亚洲精品ⅰ| 欧美专区在线播放| 欧美日韩精品不卡| 韩日精品视频一区| 亚洲香蕉网站| 亚洲最新视频在线播放| 久久久7777| 国产精品美女久久久免费| 亚洲日本一区二区三区| 久久精品国产久精国产爱| 欧美亚洲一区三区| 欧美性感一类影片在线播放 | 99pao成人国产永久免费视频| 久久久久国色av免费观看性色| 欧美视频在线观看| 亚洲国产日韩欧美在线99 | 久久夜色精品| 国产日韩欧美一二三区| 亚洲婷婷免费| 在线视频亚洲一区| 美日韩免费视频| 国产一区二区三区四区五区美女 | 一本到12不卡视频在线dvd| 免费看亚洲片| 国产一区二区中文字幕免费看| 亚洲视频中文字幕| 亚洲婷婷综合色高清在线| 欧美精品videossex性护士| 在线看国产日韩| 久久成人资源| 久久精品国产99精品国产亚洲性色 | 欧美激情在线狂野欧美精品| 禁断一区二区三区在线| 欧美中在线观看| 久久久久九九九| 国内久久精品| 久久黄色影院| 久热精品视频在线观看一区| 国语自产精品视频在线看8查询8 | 亚洲视频在线看| 欧美日韩成人免费| 亚洲美女av网站| 一区二区三区成人| 欧美色欧美亚洲另类七区| 一本色道久久综合狠狠躁篇的优点| 中文精品视频| 欧美系列亚洲系列| 亚洲一区视频| 久久精品成人一区二区三区| 国产亚洲制服色| 久久精品二区亚洲w码| 久久一区中文字幕| 有码中文亚洲精品| 亚洲精品久久久久久久久久久久久| 欧美18av| 亚洲老司机av| 亚洲午夜伦理| 国产精品伦理| 午夜精品久久| 蜜桃精品一区二区三区| 亚洲国语精品自产拍在线观看| 一本久久综合亚洲鲁鲁五月天| 欧美日韩一区在线观看| 亚洲在线免费视频| 久久精品天堂| 亚洲高清视频中文字幕| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 国内精品视频在线播放| 91久久久久久| 欧美日韩国产一区二区三区地区| 99亚洲一区二区| 欧美在线看片a免费观看| 国产一区二区三区在线观看视频 | 国产欧美日韩在线播放| 亚洲大胆av| 欧美激情亚洲激情| 在线综合亚洲欧美在线视频| 久久国产成人| 亚洲高清免费在线| 亚洲欧美偷拍卡通变态| 黄色一区二区在线观看| 一本到高清视频免费精品| 国产九九精品| 亚洲人成小说网站色在线| 欧美午夜片在线观看| 久久er精品视频| 欧美日韩国产三区| 午夜伦理片一区| 欧美日本簧片| 欧美在线网站| 欧美色区777第一页| 久久国产精品毛片| 欧美日韩一区在线| 久久精品国产2020观看福利| 欧美日韩卡一卡二| 久久精品二区| 国产精品久久久久久av福利软件| 亚洲大胆女人| 国产精品福利网站| 亚洲精品免费电影| 国产精品日韩久久久久| 亚洲欧洲日产国码二区| 国产精品视频一区二区高潮| 亚洲三级影片| 国产亚洲精品美女| 亚洲调教视频在线观看| 一区免费在线| 欧美一区亚洲二区| 日韩视频欧美视频| 久久视频在线免费观看| 亚洲天堂av在线免费| 欧美大秀在线观看| 欧美在线观看你懂的| 欧美三级视频| 亚洲人成在线影院| 国产一区二区你懂的| 亚洲欧美日韩精品| 亚洲精品少妇| 欧美 日韩 国产在线| 香蕉久久精品日日躁夜夜躁|