当前,Synopsys公司的PCIe IP在整个市场中占据着主导地位。凭借在PCIe IP领域超过20年的专业经验,Synopsys为AI、HPC、网络、存储、移动和汽车SoC提供下一代设计所需的低延迟和高性能连接,覆盖从PCIe 1.0到7.0全版本的标准。
本文主要介绍Synopsys PCIe控制器的一些基本内容和概念。Synopsys PCIe Application如下图所示,主要实现了PCIe协议的三个层:事务层、数据链路层和物理层的MAC部分。
此外,它还实现了用于数据包传输的PCIe事务层的依赖于应用程序的功能,该功能位于应用程序逻辑和PCIe协议层之间。
一个完整的PCIe port解决方案包括控制器、模拟PHY、以及application逻辑。模拟PHY通过标准PIPE接口与物理层的MAC相连。
PCIe IP架构介绍
PCIe IP的总体架构框图如下,主要包括CXPL、RADM、XADM、CDM四个模块。
Common Express Port Logic(CXPL)模块:实现PCIe物理层、链路层和事务层的基本功能。该模块实现了大部分事务层逻辑、所有数据链路层逻辑和物理层的MAC部分,包括链路训练和状态状态机(LTSSM)。CXPL通过PIPE与外部PHY连接。
Transmit Application- Dependent Module(XADM)模块:实现PCIe 事务层用于数据包传输的应用功能。其功能包括:
- TLP仲裁TLP形成流量控制credit检查
Receive Application- Dependent Module(RADM)模块:实现用于数据包接收的PCIe事务层的应用功能。其功能包括:
-
- 对接收到的TLP进行排序/过滤。过滤规则和路由是可配置的。对接收到的TLP进行缓冲和排队。接收到的TLP到控制器接收接口的路由。
- RADM维护一个接收完成查找表(LUT),用于完成跟踪和完成超时监控TX未提交的请求。当预期的RX完成没有在超时时间内到达时,它表示一个超时。
Configuration- Dependent Module(CDM)模块:其功能包括:
- 标准PCIe配置空间控制器特定的寄存器空间(端口逻辑寄存器)
带有AXI Bridge模块的PCIe控制器的详细框图如下:
AXI Bridge模块:实现PCIe控制器native接口与AXI接口的转换。
Transmit Application Interface Module (XAIM)模块:该模块与应用程序接口,用于数据包传输。该模块形成PCIe TLP头,并可选地实现地址转换功能。
电源管理控制器(Power Management Controller,PMC):实现控制器电源管理功能。LBC(Local Bus Controller):为本地CPU(通过DBI)提供了一种访问内部寄存器(在CDM中)的机制。数据总线接口(Data Bus Interface,DBI): DBI模块为本地CPU访问内部寄存器(在CDM中)提供了一种机制。消息生成模块(MSG_GEN):用于传输控制器产生的消息。热插拔控制模块(HOTPLUG):实现对热插拔事件产生中断的逻辑。CXS控制器:用于CML (Coherent Multichip Links)。XALI : Transmit Interfaces。VMI : Vendor Message Interface。SII : System Information Interface。
PCIe控制器的初始化流程:
1、application设置app_ltssm_enable为0来disable link training。
2、在链路训练之前,application可通过DBI接口配置控制器的寄存器。
3、application设置app_ltssm_enable为1,控制器开始进行链路训练。
4、确认链路建立完成。
5、RC开始枚举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、开始传输数据。
5195
