【PCIe 总线及设备入门学习专栏 5.3.1 -- PCIe PHY firmware load | trainning | link up 区别与联系】
请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】
文章目录
- Overview
- PCIe PHY Firmware 加载
- PCIe PHY Training
- PCIe PHY Link Up
- 区别与联系
- 实际例子
- 总结
Overview
本文将介绍 PCIe PHY firmware加载 与 PCIe phy link up 及 PCIe phy trainning的区别与联系。
在 PCIe 系统中,PHY Firmware 加载 、PHY Training 和 PHY Link Up 是链路建立过程中不同的阶段,它们各有特定作用,同时彼此存在关联。以下是对这些概念的详细介绍以及它们之间的区别和联系,最后通过一个实际例子说明整个流程。
PCIe PHY Firmware 加载
PHY Firmware 加载是指将控制物理层运行的固件加载到设备的物理层处理单元(PHY)中。这是链路初始化的一个重要前提步骤。
-
功能 :
-
初始化物理层硬件,包括 PLL(Phase-Locked Loop)、SerDes(Serializer/Deserializer)等组件。
-
配置传输协议参数,例如速率(Gen1/2/3/4/5)、编码方式、Lane 的数量等。
-
实现高级调节功能,例如电平调整、抖动优化和均衡控制。
-
-
执行阶段 :
-
通常由设备启动时的 Bootloader 或 Host Processor 触发。
-
固件可以存储在设备内部存储器(如闪存)或通过主机加载。
-
-
目的 :
准备物理层的核心硬件,使其能够支持后续的链路操作。
PCIe PHY Training
Training 是在链路初始化过程中,用于链路校准和参数协商的阶段,其目标是确保主设备(Root Complex,RC)和从设备(Endpoint,EP)之间的信号传输可靠且高效。
-
关键过程 :
-
均衡训练 (Equalization Training) :调整收发器的信号均衡参数(前馈均衡 FFE 和决策反馈均衡 DFE)以补偿信号传输的损耗。
-
速率协商 (Rate Negotiation) :选择设备之间支持的最大传输速率。
-
Lane 数协商 :确定链路所使用的 Lane 数量(如 x1、x4、x16 等)。
-
对齐和同步 :确保发送与接收数据之间的时序和位级对齐。
-
-
目标 :
在链路未开始实际通信之前,为物理层信号的传输建立最佳配置。
PCIe PHY Link Up
Link Up 是指 Training 成功完成后,链路进入正常工作状态,允许数据层和事务层数据的实际传输。
-
主要任务 :
-
完成 LTSSM(Link Training Status State Machine)的状态迁移,从
Detect
到L0
。 -
初始化数据链路层,建立协议错误检测、序列号对齐和流量控制。
-
开始实际的数据通信,传输 TLP(Transaction Layer Packets)和 DLLP(Data Link Layer Packets)。
-
-
触发条件 :
必须在 Training 成功的前提下完成。如果 Training 失败,链路无法进入 Link Up 状态。
区别与联系
属性 | PHY Firmware 加载 | PHY Training | PHY Link Up |
---|---|---|---|
定义 | 初始化物理层核心硬件的过程 | 链路校准和协商配置的阶段 | 链路正式建立并支持数据通信的状态 |
阶段顺序 | 最早阶段,先于 Training | 第二阶段,依赖固件加载完成 | 最后阶段,依赖 Training 完成 |
涉及内容 | 固件加载、硬件配置 | 信号均衡、速率协商、同步调整 | 数据层和事务层的数据传输准备 |
功能 | 准备物理层硬件 | 确保信号传输可靠 | 链路完成并可正常通信 |
数据类型 | 固件程序或配置指令 | TS1/TS2 测试信号 | 实际的 TLP 和 DLLP |
依赖关系 | 不依赖其他阶段,先完成 | 依赖固件加载完成 | 依赖 Training 成功 |
实际例子
以一个 PCIe Gen4 x4 的 NVMe SSD 连接到主机为例:
(1)PHY Firmware 加载:
-
主机电源开启后,NVMe 控制器加载 PHY 固件到物理层设备。
-
该固件对 PHY 硬件模块进行初始化,包括 PLL 上电、SerDes 配置,以及为 Gen4 的 16 GT/s 配置发送时钟和均衡参数。
(2)PHY Training:
-
主机与 NVMe 控制器开始交换 TS1 和 TS2 测试信号:
-
主机询问 NVMe 是否支持 16 GT/s,如果对方响应,双方进入 Gen4 的均衡训练。
-
使用优化的 FFE 和 DFE 参数进行信号补偿,解决物理链路中的信号损耗。
-
通过 Lane 的差错检测确定 x4 配置可用。
-
-
如果均衡训练未能成功(例如信号质量不足),链路可能回退到 Gen3(8 GT/s)。
(3)PHY Link Up:
-
LTSSM 状态机从
Polling
进入Configuration
,最终达到L0
状态。 -
数据链路层建立后,主机通过 DLLP 检查链路是否健康。
-
主机对 NVMe SSD 发起读写请求,实际数据通过 Gen4 x4 的通道传输。
总结
-
Firmware 加载 是基础,完成后才能进入链路初始化流程。
-
Training 是确保信号传输可靠的关键阶段。
-
Link Up 标志着链路成功建立,开始支持数据传输。
三者紧密配合,共同实现从硬件准备到高速通信的完整链路初始化过程。