當(dāng)前,Synopsys公司的PCIe IP在整個(gè)市場(chǎng)中占據(jù)著主導(dǎo)地位。憑借在PCIe IP領(lǐng)域超過(guò)20年的專業(yè)經(jīng)驗(yàn),Synopsys為AI、HPC、網(wǎng)絡(luò)、存儲(chǔ)、移動(dòng)和汽車(chē)SoC提供下一代設(shè)計(jì)所需的低延遲和高性能連接,覆蓋從PCIe 1.0到7.0全版本的標(biāo)準(zhǔn)。
本文主要介紹Synopsys PCIe控制器的一些基本內(nèi)容和概念。Synopsys PCIe Application如下圖所示,主要實(shí)現(xiàn)了PCIe協(xié)議的三個(gè)層:事務(wù)層、數(shù)據(jù)鏈路層和物理層的MAC部分。
此外,它還實(shí)現(xiàn)了用于數(shù)據(jù)包傳輸?shù)腜CIe事務(wù)層的依賴于應(yīng)用程序的功能,該功能位于應(yīng)用程序邏輯和PCIe協(xié)議層之間。
一個(gè)完整的PCIe port解決方案包括控制器、模擬PHY、以及application邏輯。模擬PHY通過(guò)標(biāo)準(zhǔn)PIPE接口與物理層的MAC相連。
PCIe IP架構(gòu)介紹
PCIe IP的總體架構(gòu)框圖如下,主要包括CXPL、RADM、XADM、CDM四個(gè)模塊。
Common Express Port Logic(CXPL)模塊:實(shí)現(xiàn)PCIe物理層、鏈路層和事務(wù)層的基本功能。該模塊實(shí)現(xiàn)了大部分事務(wù)層邏輯、所有數(shù)據(jù)鏈路層邏輯和物理層的MAC部分,包括鏈路訓(xùn)練和狀態(tài)狀態(tài)機(jī)(LTSSM)。CXPL通過(guò)PIPE與外部PHY連接。
Transmit Application- Dependent Module(XADM)模塊:實(shí)現(xiàn)PCIe 事務(wù)層用于數(shù)據(jù)包傳輸?shù)膽?yīng)用功能。其功能包括:
- TLP仲裁TLP形成流量控制credit檢查
Receive Application- Dependent Module(RADM)模塊:實(shí)現(xiàn)用于數(shù)據(jù)包接收的PCIe事務(wù)層的應(yīng)用功能。其功能包括:
-
- 對(duì)接收到的TLP進(jìn)行排序/過(guò)濾。過(guò)濾規(guī)則和路由是可配置的。對(duì)接收到的TLP進(jìn)行緩沖和排隊(duì)。接收到的TLP到控制器接收接口的路由。
- RADM維護(hù)一個(gè)接收完成查找表(LUT),用于完成跟蹤和完成超時(shí)監(jiān)控TX未提交的請(qǐng)求。當(dāng)預(yù)期的RX完成沒(méi)有在超時(shí)時(shí)間內(nèi)到達(dá)時(shí),它表示一個(gè)超時(shí)。
Configuration- Dependent Module(CDM)模塊:其功能包括:
- 標(biāo)準(zhǔn)PCIe配置空間控制器特定的寄存器空間(端口邏輯寄存器)
帶有AXI Bridge模塊的PCIe控制器的詳細(xì)框圖如下:
AXI Bridge模塊:實(shí)現(xiàn)PCIe控制器native接口與AXI接口的轉(zhuǎn)換。
Transmit Application Interface Module (XAIM)模塊:該模塊與應(yīng)用程序接口,用于數(shù)據(jù)包傳輸。該模塊形成PCIe TLP頭,并可選地實(shí)現(xiàn)地址轉(zhuǎn)換功能。
電源管理控制器(Power Management Controller,PMC):實(shí)現(xiàn)控制器電源管理功能。LBC(Local Bus Controller):為本地CPU(通過(guò)DBI)提供了一種訪問(wèn)內(nèi)部寄存器(在CDM中)的機(jī)制。數(shù)據(jù)總線接口(Data Bus Interface,DBI):?DBI模塊為本地CPU訪問(wèn)內(nèi)部寄存器(在CDM中)提供了一種機(jī)制。消息生成模塊(MSG_GEN):用于傳輸控制器產(chǎn)生的消息。熱插拔控制模塊(HOTPLUG):實(shí)現(xiàn)對(duì)熱插拔事件產(chǎn)生中斷的邏輯。CXS控制器:用于CML (Coherent Multichip Links)。XALI?: Transmit Interfaces。VMI?: Vendor Message Interface。SII?: System Information Interface。
PCIe控制器的初始化流程:
1、application設(shè)置app_ltssm_enable為0來(lái)disable link training。
2、在鏈路訓(xùn)練之前,application可通過(guò)DBI接口配置控制器的寄存器。
3、application設(shè)置app_ltssm_enable為1,控制器開(kāi)始進(jìn)行鏈路訓(xùn)練。
4、確認(rèn)鏈路建立完成。
5、RC開(kāi)始枚舉Downstream Device
讀取Downstream device的配置空間;
配置device的capabilities;
配置switch port的base和limit寄存器,以反映device enumerated downstream的BAR的范圍;
配置endpoint的BAR。
6、Host軟件使能BME(Bus Manager Enable)、MSE(Memory Space Enable)、ISE(I/O Space Enable)。
7、開(kāi)始傳輸數(shù)據(jù)。