《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 解決方案 > Xilinx PCI-Express核總線接口設(shè)計(jì)與實(shí)現(xiàn)

Xilinx PCI-Express核總線接口設(shè)計(jì)與實(shí)現(xiàn)

2011-10-17
作者:董永吉, 陳庶樵, 李玉峰, 李印海
來(lái)源:來(lái)源:電子技術(shù)應(yīng)用2011年第8期



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

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

 DMA方式硬件結(jié)構(gòu)如圖2所示,采用自頂向下設(shè)計(jì)方法[6-8],,將FPGA內(nèi)部邏輯劃分為7個(gè)模塊,。

 

 

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

 (1)DMA狀態(tài)機(jī)如圖3所示,,由如下幾個(gè)狀態(tài)組成:

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

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

2 硬件驗(yàn)證
 本文使用Verilog HDL語(yǔ)言編寫(xiě)代碼輸入,、代碼調(diào)試、功能仿真,、綜合,、布局布線后,再進(jìn)行仿真,、時(shí)序分析和驗(yàn)證,,最后下載到Xilinx公司的XCVSX50T芯片中,使用ChipScope對(duì)設(shè)計(jì)進(jìn)行硬件分析和驗(yàn)證,。采用聯(lián)想天啟M430E電腦搭建測(cè)試環(huán)境,,在Windows XP系統(tǒng)下編寫(xiě)測(cè)試代碼對(duì)PCI Express接口數(shù)據(jù)傳輸?shù)乃俾蔬M(jìn)行測(cè)試。測(cè)試過(guò)程分為兩個(gè)步驟:(1)對(duì)該設(shè)計(jì)功能的正確性進(jìn)行驗(yàn)證;(2)對(duì)該設(shè)計(jì)的傳輸性能進(jìn)行測(cè)試與分析,。
2.1 功能驗(yàn)證
 首先對(duì)FPGA發(fā)送MWr事務(wù)進(jìn)行驗(yàn)證,。設(shè)定每個(gè)TLP負(fù)載定長(zhǎng)為32個(gè)長(zhǎng)字,配置FPGA用戶(hù)接口模塊每次發(fā)送100 TLPs,,總共要發(fā)送12 800 B數(shù)據(jù),。用ChipScope截取TLPs的時(shí)序如圖6所示。其次對(duì)FPGA發(fā)送MRd,,接收CPLD事務(wù)進(jìn)行驗(yàn)證,,配置FPGA用戶(hù)接口模塊從HOST內(nèi)存中每次讀取100 TLPs,每個(gè)TLP的負(fù)載定長(zhǎng)為32個(gè)長(zhǎng)字,,F(xiàn)PGA共要接收12 800 B數(shù)據(jù),。用ChipScope截取TLPs的時(shí)序如圖7所示。
  通過(guò)對(duì)圖6,、圖7的時(shí)序分析表明,,該設(shè)計(jì)能夠?qū)崿F(xiàn)PCI-Express事務(wù)層功能,可以正常進(jìn)行事務(wù)層上的會(huì)話(huà),,滿(mǎn)足PCI-ExpressTM Base Specification Revision 1.0a協(xié)議,證明了本設(shè)計(jì)功能的可讀性和可靠性,。

2.2 性能分析
    測(cè)試中PCI-Express采用了X4通道,每個(gè)通道最大傳輸速率為2.5 Gb/s,理論最大的帶寬可以達(dá)到10 Gb/s,,但由于PCI-Express采用了8 b/10 b編碼,,所以實(shí)際傳輸?shù)挠行挒? Gb/s。圖8為HOST內(nèi)存與FPGA之間的傳輸速率,實(shí)際測(cè)試中,,F(xiàn)PGA傳輸數(shù)據(jù)到HOST內(nèi)存的速率穩(wěn)定后達(dá)到0.9 GB/s(7.2 Gb/s),達(dá)到理論帶寬的90%,;HOST內(nèi)存?zhèn)鬏敂?shù)據(jù)到FPGA的速率穩(wěn)定后達(dá)到0.96 GB/s(7.6 Gb/s),達(dá)到理論帶寬的96%,。

    綜上可以看出,本文的設(shè)計(jì)有效減少了數(shù)據(jù)傳輸過(guò)程中的等待時(shí)間,,大幅度地提高了數(shù)據(jù)傳輸速率,,充分發(fā)揮了PCI Express總線的優(yōu)越性能。
參考文獻(xiàn)
[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數(shù)字系統(tǒng)設(shè)計(jì)教程[M]. 北京: 北京航空航天大學(xué)出版社, 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].北京:機(jī)械工業(yè)出版社,,2000.
[8] JOHNSON H, GRAHAM M. High-speed digital design: a handbook of black magic[M]. 北京: 電子工業(yè)出版社,,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的原理及體系結(jié)構(gòu)[M]. 北京: 清華大學(xué)出版社,2007.
 

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話(huà)通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話(huà):010-82306118,;郵箱:[email protected],。