《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 解決方案 > 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;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲国产人成综合网站| 亚洲视频一起| 99re8这里有精品热视频免费| 国产综合久久| 国产日韩精品一区二区三区在线| 国产精品jizz在线观看美国| 欧美日本在线看| 欧美精品一区二区三区在线播放 | 久久久久久久999| 欧美亚洲三级| 性做久久久久久免费观看欧美| 亚洲资源av| 亚洲欧美在线一区| 亚洲欧美伊人| 欧美一区二区三区视频在线观看| 午夜精品影院| 性色一区二区| 久久久久高清| 欧美ed2k| 欧美—级高清免费播放| 欧美成人dvd在线视频| 免费中文日韩| 欧美区日韩区| 欧美日韩在线观看一区二区| 国产精品美女主播在线观看纯欲| 国产精品一区二区黑丝| 国产一区二区欧美| 在线观看精品一区| 亚洲黄色小视频| 一区二区免费看| 亚洲欧美日本在线| 午夜精品福利在线| 久久精品视频99| 亚洲激情电影中文字幕| 一区二区三区精品| 亚洲欧美另类综合偷拍| 欧美亚洲综合久久| 久久久精品免费视频| 欧美成人综合一区| 欧美性开放视频| 国产日韩在线看| 黄色成人av网站| 亚洲精品国产欧美| 亚洲一二三区在线| 久久不射中文字幕| 最新国产精品拍自在线播放| 在线亚洲精品| 久久精品亚洲热| 欧美激情综合五月色丁香| 国产精品日韩专区| 精品动漫一区| 99视频精品免费观看| 欧美伊人久久大香线蕉综合69| 亚洲国产另类久久精品| 在线视频你懂得一区| 欧美在线精品免播放器视频| 免费亚洲电影在线| 国产精品毛片大码女人| 经典三级久久| 制服丝袜激情欧洲亚洲| 久久精品导航| 亚洲综合首页| 欧美成人一区二区在线| 国产乱子伦一区二区三区国色天香| 一区二区视频免费在线观看 | 欧美日韩午夜激情| 国产亚洲一区在线播放| 亚洲欧洲一区二区天堂久久 | 久久久久久999| 欧美—级在线免费片| 国产日韩精品一区二区三区在线| 亚洲电影成人| 午夜精品影院| 一本久道久久综合婷婷鲸鱼| 久久精品麻豆| 欧美三级电影大全| ●精品国产综合乱码久久久久| 亚洲少妇一区| 99热免费精品| 久久综合给合| 国产免费观看久久黄| 亚洲精品综合久久中文字幕| 午夜精品一区二区在线观看 | 久热精品视频在线观看| 国产精品豆花视频| 亚洲人成久久| 亚洲电影下载| 欧美一区二区私人影院日本| 欧美片网站免费| 亚洲第一在线综合在线| 欧美影院午夜播放| 亚洲欧美日韩区| 欧美日韩一区二区免费在线观看 | 亚洲国产欧美一区二区三区同亚洲 | 亚洲视频在线观看三级| 免费日韩av| 狠狠久久亚洲欧美| 午夜精品福利视频| 午夜精彩视频在线观看不卡 | 国产精品视频yy9299一区| 亚洲人成在线播放网站岛国| 亚洲福利一区| 久久九九久精品国产免费直播| 国产精品v欧美精品v日本精品动漫 | 9i看片成人免费高清| 美女主播一区| 狠狠久久五月精品中文字幕| 欧美一区二区日韩| 久久高清国产| 国产精品一区二区在线观看| 中文欧美日韩| 亚洲一区久久| 国产精品chinese| 亚洲午夜精品久久| 亚洲欧美久久| 国产精品你懂的在线欣赏| 宅男66日本亚洲欧美视频| 一区二区三区高清| 欧美日韩成人网| 亚洲美女中出| 亚洲视频网站在线观看| 欧美视频一区二区| 亚洲精品免费一二三区| 夜夜嗨av一区二区三区四季av | 欧美色中文字幕| 一区二区三区高清在线| 亚洲午夜精品一区二区| 欧美系列电影免费观看| 中文精品在线| 欧美在线不卡视频| 国产亚洲毛片| 久久国产日韩| 欧美a级片一区| 最新日韩在线视频| 这里是久久伊人| 国产精品久线观看视频| 午夜精品久久久久99热蜜桃导演| 欧美在线免费| 国产在线视频欧美| 亚洲高清视频在线观看| 你懂的国产精品| 亚洲精选一区| 小处雏高清一区二区三区| 国产日韩精品久久| 亚洲国产va精品久久久不卡综合| 久久综合一区| 亚洲区一区二| 午夜亚洲福利| 黄色欧美日韩| 99综合电影在线视频| 国产精品日本欧美一区二区三区| 欧美一区91| 欧美成人a视频| 一区二区三区久久精品| 久久福利视频导航| 亚洲国产女人aaa毛片在线| 亚洲视频一区二区免费在线观看| 国产精品亚洲片夜色在线| 久久激情视频久久| 欧美日韩精品综合| 午夜在线电影亚洲一区| 欧美 日韩 国产在线| 日韩午夜免费视频| 久久久久久久97| 日韩网站在线观看| 欧美在线视频在线播放完整版免费观看| 亚洲欧美日本日韩| 国产欧美一区二区三区在线老狼| 午夜精品理论片| 欧美激情一二区| 亚洲综合日韩| 欧美成人精品在线观看| 亚洲深夜激情| 美女精品一区| 中国亚洲黄色| 毛片一区二区三区| 中文在线一区| 欧美sm视频| 午夜精品影院| 欧美精品在线看| 欧美一区在线看| 欧美色视频在线| 亚洲国产精品久久久久秋霞蜜臀 | 夜夜嗨av一区二区三区四季av| 久久成人18免费观看| 亚洲国产高清aⅴ视频| 亚洲欧美日韩综合aⅴ视频| 在线播放日韩专区| 亚洲欧美一区二区激情| 在线观看日韩一区| 欧美一区二区日韩一区二区| 亚洲人成网站色ww在线| 久久精品一区二区三区中文字幕| 亚洲精品视频免费在线观看| 久久久国产精品一区二区三区| 亚洲美女免费视频| 久久久久久久久久久久久9999 | 亚洲免费视频成人| 亚洲日本激情| 久久一区激情|