基于FPGA的PCIe設(shè)計(jì)資料_第1頁(yè)
基于FPGA的PCIe設(shè)計(jì)資料_第2頁(yè)
基于FPGA的PCIe設(shè)計(jì)資料_第3頁(yè)
基于FPGA的PCIe設(shè)計(jì)資料_第4頁(yè)
基于FPGA的PCIe設(shè)計(jì)資料_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于FPGA的PCIe設(shè)計(jì)PCIe簡(jiǎn)介PCIe基本架構(gòu)PCIe的優(yōu)勢(shì)以其復(fù)雜性為代價(jià)。PCIe是基于分組的串行連接協(xié)議,估計(jì)比PCI并行總線復(fù)雜10倍以上。這種復(fù)雜性部分源于在千兆赫速率所要求的并行到串行的數(shù)據(jù)轉(zhuǎn)換以及轉(zhuǎn)向基于分組的實(shí)現(xiàn)。PCIe保持了PCI基于加載存儲(chǔ)的基本架構(gòu),包括對(duì)PCI-X增加的對(duì)分割事務(wù)的支持。此外,它引進(jìn)了一系列底層信息傳送要件來(lái)管理鏈接(如鏈路層流量控制)以模仿傳統(tǒng)并行總線的邊帶線,且提供了更高水平的robustness和功能。該規(guī)范定義了許多特性、能同時(shí)支持當(dāng)今的需求和未來(lái)的擴(kuò)展需要,且同時(shí)與PCI保持了軟件兼容。PCIExpress的先進(jìn)特性包括:主動(dòng)電源管理;先進(jìn)的錯(cuò)誤報(bào)告;通過(guò)端對(duì)端循環(huán)冗余校驗(yàn)(ECRC)支持的端對(duì)端的可靠性;支持熱插拔以及服務(wù)質(zhì)量(QoS)流通類。一個(gè)簡(jiǎn)化系統(tǒng)的拓?fù)浣Y(jié)構(gòu)包括四個(gè)功能類型,根聯(lián)合體根聯(lián)合體(rootcomplex)、交換器(switch)、端點(diǎn)(multipleEndpoints)和橋(bridge)。ROOTComplex:根聯(lián)合體對(duì)整個(gè)PCIe建構(gòu)實(shí)施初始化并配置各鏈路。它通常把中央處理單元(CPU)與其它三個(gè)功能中的一或多個(gè)——PCIe交換器、PCIe端點(diǎn)和PCIe到PCI橋——連接起來(lái);Endpoint:端點(diǎn)通常位于終端應(yīng)用內(nèi),它負(fù)責(zé)連接應(yīng)用與系統(tǒng)內(nèi)的PCIe網(wǎng)絡(luò)。端點(diǎn)要求并完成PCIe事務(wù)傳輸。一般來(lái)說(shuō),系統(tǒng)內(nèi)的端點(diǎn)比任何其他類型的PCIe部件都要多;(1)LegacyEndpoint;(2)PCIExpressEndpoint;(3)RootComplexIntegratedEndpoint;Switch:PCIe交換器把數(shù)據(jù)路由至下游多個(gè)PCIe端口,并分別從其中每個(gè)端口路由到上游唯一一個(gè)根聯(lián)合體。PCIe交換器也可以靈活地把數(shù)據(jù)從一個(gè)下游端口路由到另一個(gè)下游端口(點(diǎn)對(duì)點(diǎn)),它消除了傳統(tǒng)PCI系統(tǒng)限制性的樹狀結(jié)構(gòu);RootComplexEventCollector;PCIExpress-PCIBridge:橋用于連接PCIe與系統(tǒng)內(nèi)諸如PCI/PCI-X等其他PCI總線標(biāo)準(zhǔn),這樣的系統(tǒng)同時(shí)采用上述各總線架構(gòu);PCIe協(xié)議規(guī)格PCIe規(guī)范對(duì)于設(shè)備的設(shè)計(jì)采用分層的結(jié)構(gòu),有事務(wù)層、數(shù)據(jù)鏈路層和物理層組成,各層有都分為發(fā)送和接收兩功能塊。在設(shè)備的發(fā)送部分,首先根據(jù)來(lái)自設(shè)備核和應(yīng)用程序的信息,在事務(wù)層形成事務(wù)層包(TLP),儲(chǔ)存在發(fā)送緩沖器里,等待推向下層;在數(shù)據(jù)鏈路層,在TLP包上再串接一些附加信息,這些信息是對(duì)方接收TLP包時(shí)進(jìn)行錯(cuò)誤檢查要用到的;在物理層,對(duì)TLP包進(jìn)行編碼,占用鏈路中的可用通道,從發(fā)送器發(fā)送出去。事務(wù)層包(TLP),數(shù)據(jù)鏈路層包(DLLP),物理層(PLP)產(chǎn)生于各自所在層,最后通過(guò)電或光等介質(zhì)和另一方通訊。這其中數(shù)據(jù)鏈路層包(DLLP),物理層(PLP)的包不需要關(guān)心,在PCIeHIP核中封裝好了。在FPGA上做PCIe的功能就是完成事務(wù)層包(TLP)的處理。處理層(TransactionLayer)處理層接收來(lái)自PCIe設(shè)備應(yīng)用的數(shù)據(jù),并將其封裝為TLP(TransactionLayerPacket)后,發(fā)向數(shù)據(jù)鏈路層。此外事務(wù)層還可以從數(shù)據(jù)鏈路層中接收數(shù)據(jù)報(bào)文,然后轉(zhuǎn)發(fā)至PCIe設(shè)備的核心層。處理層在應(yīng)用層和數(shù)據(jù)鏈路層之間,來(lái)產(chǎn)生和接收傳輸層的包。處理層包括:發(fā)送數(shù)據(jù)路徑,配置空間和接收路徑。接收數(shù)據(jù)流程:1)收到從數(shù)據(jù)鏈路層來(lái)的TLP;2)配置空間用來(lái)確定處理層的包是否正確;物理層(PhysicalLayer)物理層是PCIe總線的最底層,將PCIe設(shè)備連接在一起。PCIe總線的物理電氣特性決定了PCIe鏈路只能使用端到端的連接方式。PCIe總線的物理層為PCIe設(shè)備間的數(shù)據(jù)通信提供傳送介質(zhì),為數(shù)據(jù)傳送提供可靠的物理環(huán)境。物理層可以分割成2個(gè)子層:電氣層和邏輯層。而有一些公司已經(jīng)在電氣層和邏輯層之間定義和采用了一種接口,這種接口稱為PCIExpress物理接口(PIPE)??刂破魑锢韺佑糜谂cPHY的接口,并用于管理許多能夠發(fā)起鏈路構(gòu)建數(shù)據(jù)包的功能。一些特殊序列用于建立物理鏈路、進(jìn)入和退出低功耗鏈路狀態(tài)等。這些序列用于同步PCIe鏈路,并進(jìn)行鏈路管理。值得注意的是PCIe設(shè)備發(fā)送PLP與發(fā)送TLP的過(guò)程有所不同。物理層的接收部分負(fù)責(zé):通道映射、通道間去偏移,適用于由多條線路構(gòu)成的鏈路。數(shù)據(jù)解擾數(shù)據(jù)包檢測(cè)和解幀檢查特殊數(shù)據(jù)包序列,例如TS1、TS2、跳過(guò)和電氣空閑。物理層的發(fā)送部分負(fù)責(zé):采用特殊符號(hào)插入來(lái)對(duì)數(shù)據(jù)包進(jìn)行封幀,例如采用STD或SDP符號(hào)來(lái)標(biāo)志數(shù)據(jù)包的開始,用END符號(hào)來(lái)標(biāo)志結(jié)尾。數(shù)據(jù)加擾。鏈路控制——初始化、帶寬和線路反轉(zhuǎn)(lane-reversal)協(xié)商。多條線路發(fā)送控制。生成跳過(guò)序列來(lái)補(bǔ)償鏈路兩端的時(shí)鐘PPM差異。物理層結(jié)構(gòu)■Initializingthelink;■Scramblinganddescramblingand8B/10Bencodinganddecodingof2.5Gbps(Gen1)or5.0Gbps(Gen2)perlane8B/10B;■Serializinganddeserializingdata;ThehardIPimplementationincludesthefollowingadditionalfunctionality:■PIPE2.0InterfaceGen1/Gen2:8-bit@250/500MHz(fixedwidth,variableclock);■Autospeednegotiation(Gen2);■Trainingsequencetransmissionanddecode;■Hardwareautonomousspeedcontrol;■Autolanereversal;LTSSM物理層是PCIe體系結(jié)構(gòu)最重要,也是最難以實(shí)現(xiàn)的組成部分。PCIe總線的物理層定義了LTSSM(LinkTrainingandStatusStateMachine)狀態(tài)機(jī),在PCIe鏈路可以正常工作之前,需要對(duì)PCIe鏈路進(jìn)行鏈路訓(xùn)練。PCIe鏈路使用該狀態(tài)機(jī)管理鏈路狀態(tài),并進(jìn)行鏈路訓(xùn)練、鏈路恢復(fù)和電源管理。LTSSM狀態(tài)機(jī)涵蓋了11個(gè)狀態(tài),包括Detect,Polling,Configuration,Recovery,L0,L0s,L1,L2,HotReset,Loopback,Disable。這11個(gè)狀態(tài)之間轉(zhuǎn)換的邏輯,如下圖所示,這11個(gè)狀態(tài)大致可以分為4大類:PCIe鏈路訓(xùn)練相關(guān)。正常的PCIe鏈路訓(xùn)練狀態(tài)轉(zhuǎn)換流程依次是,Detect->Polling->Configuration->L0。L0是PCIe鏈路可以正常工作的電源狀態(tài);PCIe鏈路重新訓(xùn)練相關(guān)。這個(gè)狀態(tài)也稱為Recovery。Recovery是一個(gè)非常重要的鏈路狀態(tài),進(jìn)入這個(gè)狀態(tài)的因素也很多,比如電源狀態(tài)的變化,PCIe鏈路速率的變化等;電源狀態(tài)相關(guān)。PCIe總線的電源狀態(tài)主要有兩部分的內(nèi)容:基于軟件控制的PCI-PM電源管理機(jī)制,是系統(tǒng)軟件通過(guò)修改寄存器中的電源管理字段,使PCIe設(shè)備進(jìn)入D狀態(tài):D0,D1,D2,D3;基于硬件控制的ASPM(=ActiveStatePowerManagement)電源管理機(jī)制,是基于硬件自主控制的鏈路電源管理機(jī)制,只有在PCIe設(shè)備處于D0狀態(tài)是才可以啟動(dòng)ASPM機(jī)制,另外,與ASPM有關(guān)的鏈路狀態(tài)有L0s,L1(包括L1.1和L1.2);其他相關(guān),比如HotReset,LinkDisable,Loopback等;PCIeHIP設(shè)置HardIP模塊結(jié)構(gòu)System設(shè)置1)Pciecore的類型:軟核、硬核。2)PHYtype:選擇用不同的器件來(lái)實(shí)現(xiàn),可以看到下面支持lane的數(shù)量的不同。3)Porttype:NativeEndpoint、LegacyEndpoint、Rootpoint。4)Xcvrref_clk:設(shè)置reclk的輸入時(shí)鐘,可以在手冊(cè)中清楚看到,對(duì)于不同的器件,輸入?yún)⒖紩r(shí)鐘的區(qū)別。5)ApplicationInterface:用于指定PCIExpress中傳輸層和應(yīng)用層的接口,如果用MegaWizard,建議采用Avalon-ST.6)Applicationclock:指定應(yīng)用的接口時(shí)鐘,在選擇硬核和軟核時(shí)有區(qū)別。7)Maxrate:Gen1(2.5Gbps),Gen2(5.0Gbps)8)Testoutwidth:設(shè)置test_out的寬度,對(duì)于不同的核和lanes有不同的設(shè)置。9)PCIereconfig:重配置硬核只讀配置寄存器。PCIeRegister對(duì)PCIe(PCI)設(shè)備來(lái)說(shuō),CPU初始化會(huì)檢測(cè)到FPGA有多少個(gè)BAR空間,每個(gè)空間有多大,然后對(duì)應(yīng)為這些BAR空間分配地址。對(duì)系統(tǒng)設(shè)備來(lái)說(shuō),它能“看”到FPGA的空間就是BAR空間,只能訪問(wèn)這些BAR空間。也就是說(shuō),CPU端通過(guò)PCIe接口訪問(wèn)FPGA被局限在BAR空間內(nèi)。在FPGA中,BAR空間的設(shè)置根據(jù)用戶邏輯設(shè)計(jì)的需求來(lái)定義大小。CapabilitiesParameter1)Tagssupported:設(shè)置支持non-posted報(bào)文請(qǐng)求的tags數(shù)目。HardIP:32or64tagsforX1,X4和X8模式。SoftIP:4-256forX1和X4模式,4-32forX8模式。2)Implementcompletiontimeoutdisable:該選項(xiàng)只對(duì)Gen2的RootPort和Endpoint有效.3)CompletionTimeoutrange:你可以選擇ABCD,分別對(duì)應(yīng)不同的時(shí)間范圍。4)ErrorReporting:可以顯示的錯(cuò)誤信息。5)MSICapabilities:用來(lái)設(shè)置應(yīng)用層請(qǐng)求數(shù)量,將此值設(shè)置給消息控制寄存器。SOPC只支持1個(gè)MSI。6)linkCapabilities:Linkcommonclock:是否用系統(tǒng)提供的普通參考時(shí)鐘給PHY來(lái)做參考時(shí)鐘,建議選用。Datalinklayeractivereporting:只在rootport有效Linkportnumber:將只讀端口數(shù)目設(shè)置到linkCapabilities寄存器中。7)SlotCapability:Table3-3中詳細(xì)介紹了Slotcapability寄存器中各個(gè)值對(duì)應(yīng)的意義。該選項(xiàng)只對(duì)RootPort有效。8)MSI-Xcapabilities:此中斷只對(duì)HardIP的Endpoint有效。MSI-XTablesize:系統(tǒng)軟件讀這個(gè)地方來(lái)確定MSI-XTableSize,只讀。MSI-XTableOffset:指向MSI-Xtable的基地址,只讀。BARIndicator:用來(lái)將MSI-Xtable映射到memory空間,只讀。PCIe可以發(fā)出兩種中斷,一種是虛擬INTx信號(hào)線,一種是MSI。過(guò)去PCI板卡發(fā)送中斷通過(guò)拉低INTx(INTA#,INTB#,INTC#,INTD#)來(lái)申請(qǐng)中斷,CPU檢測(cè)到INTx的中斷,就跳轉(zhuǎn)執(zhí)行INTx對(duì)應(yīng)的中斷驅(qū)動(dòng)程序,驅(qū)動(dòng)程序里需要操作板卡將INTx拉回去,不然就發(fā)生嵌套中斷了。MSI是基于消息機(jī)制的,CPU啟動(dòng)后為FPGA分配一個(gè)或多個(gè)消息地址,F(xiàn)PGA發(fā)送中斷只需要向?qū)?yīng)的地址內(nèi)發(fā)送消息即可。消息內(nèi)容中包含消息號(hào),每個(gè)消息號(hào)對(duì)應(yīng)在CPU端的某一地址。中斷和其他包是分開的,中斷發(fā)送是非常簡(jiǎn)單的,并不需要用到PCIeCore的TX接口,只需要簡(jiǎn)單操作幾條信號(hào)線就可以實(shí)現(xiàn)PCIe核組織需要的中斷包向外發(fā)送。BufferSetupMaximumpayloadsize:設(shè)置最大的有效載荷大小,對(duì)于不同的器件有不同的上限值;Number

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論