《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 解決方案 > Xilinx PCI-Express核總線接口設計與實現

Xilinx PCI-Express核總線接口設計與實現

2011-10-17
作者:董永吉, 陳庶樵, 李玉峰, 李印海
來源:來源:電子技術應用2011年第8期



    隨著計算機技術的飛速發展,PCI總線已經遠遠不能滿足當前處理器和I/O設備對帶寬的更高需求。傳統PCI和PCI-X[1]總線都是多點并行互連總線(即多臺設備共享一條總線),并行總線之間存在相互干擾、時鐘抖動,這些因素制約了其帶寬。PCI-SIG(Peripheral Component Interconnect Special Interest Group)推出的第三代I/O系統PCIE(PCI-Express)[2]能夠實現兩臺設備之間點對點的串行通信,使用交換器還可實現多臺PCI-Express設備的互連,而且具有管腳少、帶寬高、外圍傳播能力強、兼容性能好等特點。目前,PCI-Express 1.0a發送和接收的數據速率可達2.5 Gb/s。
  類似于OSI(Open System Interconnection)網絡模型,PCI-Epxress引入了分層概念,層與層之間透明,各自完成獨立功能的同時又緊密聯系。PCIE總共分為三層:物理層、數據鏈路層和事務層。其層次結構[3]如圖1所示。

    物理層分為邏輯物理層和電氣物理層。邏輯物理層完成對數據包的合成分解、8 b/10 b編碼和10 b/9 b解碼、并串轉換和串并轉換;電氣物理層負責對每路串行數據差分驅動的傳輸與接收及阻抗匹配;數據鏈路層是其中間層,主要負責鏈路管理、與數據完整性相關的功能,包括錯誤檢測和錯誤改正以及產生和處理數據鏈路層包。事務層是PCI Express架構的上層,其主要功能是接收、緩沖和分發事務包TLP(Transaction Layer Packet)。TLP通過使用存儲器、I/O、配置和消息事務來傳遞信息。為了最大限度地提高器件之間的通信效率,事務層強制遵循符合PCIE的事務排序規則,并通過基于信用的流量控制來管理TLP緩沖空間。
 在PCI-Express系統中,CPU由兩種事務來訪問其架構中的存儲器映射輸入輸出和配置映射輸入輸出位置。一種是程控輸入輸出(Programmed Input Output)方式,該方式在數據傳輸的過程中需要CPU的直接參與,其速度較慢、效率較低;另一種是直接內存訪問DMA(Direct Memory Access)方式,該方式在實現高速外設和主存儲器之間成批交換數據時,不需要CPU的直接參與,而在RAM與設備之間完成傳輸時,該方式可減少CPU的占用率,大大提高了數據的吞吐率,使系統的性能大幅度提升。DMA方式有兩種類型:第三方DMA(third-party DMA)和第一方DMA(first-party DMA)或稱總線主控DMA(Bus-mastering DMA)。第三方DMA通過系統主板上的DMA控制器的仲裁來獲得總線和傳輸數據。而第一方DMA則完全由接口卡上的邏輯電路來完成,與快取內存結合在一起,提高了數據的存取及傳輸性能。
    Xilinx公司Virtex-5系列FPGA提供了PCIE的IP核[4-5],支持以上幾種事務訪問方式,在核中固化了物理層和數據鏈路層的相關設計,向用戶開放事務層接口,在進行PCI-Express相關設計時,用戶只需要配置相關參數來完成物理層和數據鏈路層的設計,從而只專注于事務層設計與開發,縮短了產品的研發周期。
 本文采用總線主控DMA方式,完成了PCI Express數據事務層的接口設計。使用Verilog HDL語言編寫,實現了處理器內存與用戶邏輯之間數據的高效傳輸。
1 PCI-Express數據事務層DMA方式設計
1.1 設計結構

 DMA方式硬件結構如圖2所示,采用自頂向下設計方法[6-8],將FPGA內部邏輯劃分為7個模塊。

 

 

    (1)PCIE核接口模塊:該模塊完成與Xinlinx PCIE核接口信號的對接及對PCIE核的初始化配置。
 (2)發送引擎模塊:該模塊按照PCI-ExpressTM Base
Specification Revision 1.0a協議將待發送的數據和寄存器信息封裝成事務包(TLP)傳輸到PCIE核接口模塊。
 (3)接收引擎模塊:該模塊按照協議將從PCIE核接口模塊接收下來的事務包解封裝,并根據TLPs的頭標中的信息將數據分流,分別寫入接收控制寄存器或是接收FIFO中。
 (4)DMA控制模塊:DMA控制寄存器由中斷原因寄存器、接收控制寄存器和發送控制寄存器構成。中斷原因寄存器中存放中斷產生的原因。接收控制寄存器用來接收存放內存讀請求MRd(Memory Read Request)操作的DMA控制信息,包括內存讀請求地址寄存器、讀長度寄存器、讀包數寄存器、讀完成包數寄存器。發送控制寄存器用來存儲內存寫請求MWR(Memory Write Request)的DMA控制信息,包括內存寫請求地址寄存器、寫長度寄存器和寫包數寄存器。
 (5)輸入輸出緩存模塊:為了提高數據傳輸率、處理大量數據流、匹配具有不同傳輸率的系統以及緩存數據以備處理,利用了兩個獨立的FIFO數據通道。一個用于PCIE發送引擎模塊到用戶邏輯模塊傳輸數據時的緩存(稱為發送FIFO);另一個用于用戶邏輯模塊到PCIE接收引擎模塊傳輸數據時的緩存(稱為接收FIFO)。
 (6)用戶邏輯模塊:配置和讀取DMA控制寄存器及控制數據的輸入輸出。用戶邏輯通過讀取寄存器的值來控制中斷和數據的傳輸。
 (7)用戶接口模塊:提供用戶簡單的數據接口通道和控制信號,屏蔽復雜的控制操作并簡化用戶操作。
1.2 設計流程
1.2.1 DMA狀態流程

 (1)DMA狀態機如圖3所示,由如下幾個狀態組成:

 空閑狀態:狀態機無數據傳輸時默認保持在該狀態,當寫請求信號有效時,狀態機轉入寫配置請求狀態;當讀請求信號有效時,狀態機轉入讀請求狀態;當滿足中斷觸發條件時,狀態機轉入中斷申請狀態。
 (2)寫配置請求狀態:通過該狀態FPGA將本次傳輸發送的數據長度及TLPs包數等信息發送給處理器,為大規模的數據傳輸做好準備。
 (3)寫發送數據狀態:控制完成FPGA和HOST內存之間的大規模數據傳輸。
 (4)讀請求狀態:根據控制寄存器中的相關信息,發出數據的讀請求事務。
 (5)中斷申請狀態:當硬件發送和接收的數據傳輸完畢或是空閑等待時間滿足一定觸發條件時,狀態機會在保存現場之后跳轉到中斷申請狀態。該狀態向處理器發出中斷申請,同時根據產生中斷的原因相應地置位中斷原因寄存器。
 (6)中斷響應狀態:當處理器響應中斷后,硬件狀態機同步轉入中斷完成狀態,同時清空中斷原因寄存器中相應的位,恢復中斷前的現場環境。
1.2.2 存儲器寫傳輸流程
 存儲器寫傳輸有兩種情況:FPGA發送存儲器寫請求至HOST內存和HOST內存發送存儲器寫請求至FPGA,即FPGA接收存儲器的寫請求。
    FPGA發送存儲器寫請求TLPs流程如圖4(a)所示。首先,用戶接口模塊將待發送的數據依次傳送到發送FIFO中,同時通過用戶邏輯模塊在發送控制寄存器中配置該次傳輸的信息,包括存儲器寫請求的目的地址、本次傳輸數據的長度和本次傳輸的總TLPs包數。其次,當發送FIFO中待發送的數據準備就緒時,開始發送FIFO中數據。當用戶接口模塊待發送數據全部傳輸完畢之后,FPGA發出中斷請求通知處理器傳輸完畢,處理器響應中斷后,一次完整的存儲器寫請求事務結束。
 只要FPGA的接收FIFO中數據未溢出,即可接收HOST內存的MWr TLPs。接收引擎模塊根據接收到的TLP頭表中類型和格式字段的編碼判斷其類型,按照協議規定的格式解開其封裝,發送數據到接收FIFO中,進而傳送到用戶接口模塊。整個傳輸流程如圖4(b)所示。

1.2.3 存儲器讀/完成傳輸流程
 存儲器讀/完成傳輸有兩種情況:FPGA發送存儲器讀請求和接收帶數據的完成返回包CPLD(Completion with Data);FPGA接收存儲器讀請求和發送帶數據的完成返回包。
 FPGA發送存儲器讀請求MRd TLPs和接收CPLD TLPs流程如圖5(a)所示,只要接收FIFO沒有溢出,FPGA即可發起存儲器讀事務。每次發出MRd請求之前,需要通過用戶邏輯模塊在接收控制寄存器中配置該次傳輸需要讀取的信息,包括內存讀請求的源地址、本次接收數據的長度和本次接收的總TLPs包數。HOST內存從MRd頭信息中獲知本次事務要讀取設備存儲空間的地址和長度,并根據此發送CPLD到FPGA。接收引擎模塊根據協議包格式在CPLD中提取出承載的數據,并將數據傳送到用戶接口模塊。當請求的數據全部接收完畢之后,FPGA發出中斷請求通知處理器傳輸完畢,處理器響應中斷后,一次完整的存儲器讀請求事務結束。
 當FPGA接收MRd和發送CPLD TLP時,接收引擎模塊根據接收到的MRd攜帶的信息,從存儲空間中讀取數據到發送FIFO中,當發送FIFO中的數據準備就緒后,FPGA開始發送CPLD,直到全部被讀取的數據都發送完畢后,結束本次數據傳輸。整個傳輸流程如圖5(b)所示。

2 硬件驗證
 本文使用Verilog HDL語言編寫代碼輸入、代碼調試、功能仿真、綜合、布局布線后,再進行仿真、時序分析和驗證,最后下載到Xilinx公司的XCVSX50T芯片中,使用ChipScope對設計進行硬件分析和驗證。采用聯想天啟M430E電腦搭建測試環境,在Windows XP系統下編寫測試代碼對PCI Express接口數據傳輸的速率進行測試。測試過程分為兩個步驟:(1)對該設計功能的正確性進行驗證;(2)對該設計的傳輸性能進行測試與分析。
2.1 功能驗證
 首先對FPGA發送MWr事務進行驗證。設定每個TLP負載定長為32個長字,配置FPGA用戶接口模塊每次發送100 TLPs,總共要發送12 800 B數據。用ChipScope截取TLPs的時序如圖6所示。其次對FPGA發送MRd,接收CPLD事務進行驗證,配置FPGA用戶接口模塊從HOST內存中每次讀取100 TLPs,每個TLP的負載定長為32個長字,FPGA共要接收12 800 B數據。用ChipScope截取TLPs的時序如圖7所示。
  通過對圖6、圖7的時序分析表明,該設計能夠實現PCI-Express事務層功能,可以正常進行事務層上的會話,滿足PCI-ExpressTM Base Specification Revision 1.0a協議,證明了本設計功能的可讀性和可靠性。

2.2 性能分析
    測試中PCI-Express采用了X4通道,每個通道最大傳輸速率為2.5 Gb/s,理論最大的帶寬可以達到10 Gb/s,但由于PCI-Express采用了8 b/10 b編碼,所以實際傳輸的有效帶寬為8 Gb/s。圖8為HOST內存與FPGA之間的傳輸速率,實際測試中,FPGA傳輸數據到HOST內存的速率穩定后達到0.9 GB/s(7.2 Gb/s),達到理論帶寬的90%;HOST內存傳輸數據到FPGA的速率穩定后達到0.96 GB/s(7.6 Gb/s),達到理論帶寬的96%。

    綜上可以看出,本文的設計有效減少了數據傳輸過程中的等待時間,大幅度地提高了數據傳輸速率,充分發揮了PCI Express總線的優越性能。
參考文獻
[1] PCI Special Interest Group PCI local bus specification 2.3[S]. 2002.
[2] PCI Special Interest Group.PCI-ExpressTM base specification Revision 1.0a base[S]. 2003.
[3] BUDRUD R, ANDERSON D, SHANLEY T. PCI express system architecture[M]. MindShare, Inc, 2003.
[4] XILINX Inc. Virtex-5 Integrated Endpoint Block for PCI Express Designs[R]. 2009.
[5] XILINX Inc. LogiCORE? IP endpoint block plus v1.14 for PCI Express[R]. 2010.
[6] 夏宇聞. Verilog數字系統設計教程[M]. 北京: 北京航空航天大學出版社, 2008.
[7] HALL S H, HALL G W, MCCALL J A. High-speed digital system design a handbook of interconnect theory and design practices[M].北京:機械工業出版社,2000.
[8] JOHNSON H, GRAHAM M. High-speed digital design: a handbook of black magic[M]. 北京: 電子工業出版社,2010.
[9] HYUN E, Seng Kwangsu. Design and verification for PCI express controller[C]. ICITA'05, 2005:581-586.
[10] 馬鳴錦,朱劍冰,何紅旗,等. PCI、PCI-X和PCI Express的原理及體系結構[M]. 北京: 清華大學出版社,2007.
 

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:[email protected]
主站蜘蛛池模板: 亚洲男人的天堂视频 | 毛片图片| 三级国产精品 | 国产成人一区二区在线不卡 | 黄网站免费在线 | 91福利网 | 欧美在线视频免费 | 一级aaa级毛片午夜在线播放 | 国产一区二区三区亚洲综合 | 国产精品二区高清在线 | 欧美日韩人成在线观看 | 亚洲综合天堂 | 色偷偷女男人的天堂亚洲网 | 欧美成人免费香蕉 | 成人三级视频在线观看 | 免费国产99久久久香蕉 | 色拍拍在精品视频69影院在线 | 男女免费视频网站 | 男性吸女下身的视频 | 日本成人免费在线视频 | 毛片随便看 | 黄色美女在线观看 | 欧美一级毛片无遮挡 | 国内精品2020情侣视频 | 另类视频在线观看 | 国内精品一区二区三区最新 | 欧美一级毛片日韩一级 | 免费一级欧美大片久久网 | 亚洲一级二级三级 | 国产亚洲精品久久久久久久 | 久久久网久久久久合久久久久 | 欧美三级一区 | 怡红院在线视频观看 | 久久15| 美女福利视频国产 | 国产一级片大全 | 亚洲黄色美女视频 | 大陆精品自在线拍国语 | 一级女性全黄久久生活片免费 | 男人性天堂 | 免费观看欧美一级毛片 |