PCIe 每日一问一答

以下转载自【毅力挑战】PCIe 每日一问一答(2022.03 归档)-阿里云开发者社区

一位有毅力的大神

2022.03.01 - PCIe Retimer 是什么?

随着 PCIe 的迭代,传输速率越来越高,高速信号传输中的信号衰减问题越来越大。目前解决信号衰减的三大方案:① 高速 PCB 板材;② Retimer;③ Redriver。Retimer 是三者中性价比最高的一种方案,也更为主流。2021年是 Retimer 发展元年。

Retimer 通过 其 Rx 端 CTLE/DFE (连续时间线性均衡/判断反馈均衡) 、CDR (时钟数据恢复) 及 Tx 端 EQ (均衡),来够补偿信道损耗,消除信号抖动,提升信号完整性,从而增加传输距离。

Redriver 是放大信号,Retimer 是重新生成信号。Retimer 比 Redriver 性能更高,但时延也更大。

8e72c50b43904d93bcf45b9bf86dea50.png

友情链接:

   PCIe Base Spec R6.0, Chapter 4.3

   均衡器EQ和它在高速外部总线中的应用

   ReTimer和ReDriver简介

   PCIe Retimer是个什么样的市场?

2022.03.02 - PCIe Lane-Lane Skew 产生的原因 及 De-skew 方法?

同一 Link 多条 Lane 之间难免存在 Skew,即便 Tx 端采用同一 Clock 同时发送,不同 Lane 上到达 Rx 时间也难以相同。PCIe Lane-Lane Skew 一般源于以下几点:

   电气 Driver 及 Receiver 之间存在差异。

   印刷线路板阻抗变化。

   不同 Lane 的走线长度存在差异。

Gen1/Gen2 时常用检测 OS 序列中的 COM 符号来实现多 Lane 的 De-skew;Gen3及以上常采用检测 SDSOS、EIEOS、SKP等方式来实现 De-skew,具体情况需具体分析。

2022.03.03 - Link Error 包括哪几种?发生 Link Error 时是如何恢复的?

Link Error,链路错误,是指连接两个 PCIe 设备的物理链路出现错误,通常在物理层检测出并传达到数据链路层。Link Error 包括以下几种:8b/10b 解码错误、framing 出错、符号/Block 锁定后失锁、弹性缓存上下溢出及 Lane 间消抖失败。

如果是在链路 Training 期间发生链路错误(非 Detect、Disable状态),无需特殊操作,LTSSM 正常运转,各个状态的 Timeout 机制保证 LTSSM 回转到 Detect 状态进行 Retraining。

如果是在 L0 状态发生链路错误(frame error等),可以由软件控制 LTSSM 由 L0 -> Recovery 进行链路恢复,或者重新训练。需要注意的是,出现链路错误后,下游设备是无法通过错误链路告知上游设备的,需要由错误链路上游的交换开关 USP 或 RC 上报错误,开启 Retraining。软件通过查验相关寄存器确认是否训练成功。

2022.03.04 - Alternate Protocol Negotiation 是什么 ? 跟Modified TS的关系?

为了扩展 PCIe 设备的适用范围,PCIe 5.0 开始支持 Alternate Protocol。Alternate Protocol 是指运行在 PCIe PHY 上的非标准 PCIe 协议,目前有 CXL 协议。

CXL 运行在 PCIe 5.0 PHY 上,支持 CXL 协议的设备也支持 PCIe 协议。那么到底采用 CXL 还是 PCIe 协议,收发端在进行链路训练的时候可以进行协商,即 Alternate Protocol Negotiation。Alternate Protocol Negotiation 采用 Modified TS1/2,跟 Cfg.Lanenum.Wait、Cfg.Lanenum.Accept、Cfg.Comple 并行,bypass EQ。可参考 2022.02.21 Modified TS 相关介绍。

勘误:

2022.02.21 ,alternate protocol 协商与 lane number 协商并行。

2022.02.15,添加参考文献

2022.03.05 - PCIe Switch 有哪几种传输模式?

PCIe Switch 传输 TLP 有两种模式:① Store & Forward;② Cut-through。

   Store & Forward,接收报文并进行校验,如有错误走 NAK DLLP 请求重传,否则推送到 Egress Port。这种模式保证送到 Switch 出口的报文是正确的,但也因此增加了延时。对于 Data Payload 比较大的 TLP,采用该模式时延很大。

   Cut-through,直接了当,接收报文直接推给 Egress Port,没收完也推,延时低但不保证报文正确。当接收完报文进行校验,发现报文错了,发送 NAK DLLP 给 Requester 请求重传,然后给 Completer 发送 EDB(End Bad)让 Completer 无视该报文(如下图)。当链路质量不好时,频繁出现校验失败,采用该模式很浪费带宽。

f7152ea6c02b4a34908c3dd11b1ab4e1.png

▲ 图1 Switch Cut‐Through Mode Showing Error Handling

参考:

   PCI Express Technology, Mindshare.inc, chapter 10

   STORE & FORWARD AND CUT-THROUGH

2022.03.06 - Poisoned TLP 是什么?是干啥的?

Data Poisoning 或称 Error Forward,是一种事务层报告错误的方法,报告错误时发送的 TLP 为 Poisoned TLP。Poisoned TLP,有毒的 TLP,仅用于含有 Data 的 Request 或 Completion,比如 写请求、MsgD、读完成、Atomic 请求及完成。

Poisoned TLP 通过 TLP Header 中的 EP 位来指示,EP=1 时,即表示当前 TLP 数据被破坏了。注意,是 TLP Data 被破坏了,不是Header,Header 出错可不归他管,Header 出错那就是另外的故事了。Posioned TLP 用于控制 Error 在整个系统内的传播,协助软件诊断该 TLP 路由路径上的 Switch 是否给该 TLP 贴上了有毒标签。

在生成这个 TLP 的时候就知道这是个 Data 错误的 TLP。既然知道 Data 出错,为什么还要继续发?—— 以读请求为例,Requester 发出读请求后,在等待 Completion,现在数据读回传了,但是 Switch 在半路就检测到 Data 出错了,你这 Completion 还要不要继续发?不发的话,Requester 还在等,直到 Timeout。倒不如给个错误信号,至少不会让 Requester 久等。Requester 收到 Poisoned TLP,知道发生了事务层错误,至于这数据要不要用,都不违法。

友情链接

   PCIe扫盲——PCIe错误源详解(一)

2022.03.07 - TLP Digest 是什么?

Digest,又名 ECRC。

TLP 包格式:Prefix + Header + Data Payload + Digest。TLP Digest 便是这 TLP 包的组成部分,位于 TLP 末尾,长度 1DW,存放了该 TLP 的 ECRC 值。

TLP 四大组成中,除了 Header,其他都是可选项,包括 Digest。TLP Header 中有一个字段 TD (TLP Digest),用以标记该 TLP 是否使用 Digest,或者说该 TLP 是否使用 ECRC。如果 Header 显示该 TLP 不含 Digest,但最后收到了 Digest,这个 TLP 就是个畸形包,要上报错误。

c6ec75bec3d04c41af2a1c5df8c2531b.png

▲ 图1 TLP 包格式

2022.03.08 - Native EP 和 Legacy EP 是啥?

 EP 分两种:Legacy EP 及 Native EP。Leagcy EP 是指原本给 PCI-X 总线接口设计的 EP 被改为 PCIe 总线接口 EP。Native EP 是指标准的 PCIe EP。Legacy EP 支持部分 Native EP 禁止的操作,Native EP 全部通过内存映射来操作。两者比较如 表1 所示。

▼ 表1 Legacy EP Vs. Native EP  

image.png

2022.03.09 - PCIe LCRC 和 ECRC 有何区别?

  PCIe 采用 CRC 校验来检测 TLP 是否存在错误,根据检测层次不同可分为 LCRC 及 ECRC。

  两者存在以下区别:

▼ 表1 LCRC Vs. ECRC

image.png

参考:

   PCIe扫盲——PCIe错误检测机制

   ECRC VS LCRC

2022.03.10 - PCIe Sequence Number 是什么?有什么用处?

 DL 层在发生 TLP 前会给每一个 TLP 添加一个序列号,即 Sequence Number。

 接收端 DL 层在检查完 LCRC 后对 Sequence Number 进行检查,判断接收到的序列号是否与期望值一致,以此判断是否有丢包。出现丢包的话,依据 Sequence Number 发送 NAK 请求重传丢掉的包。短时间内收到 Sequence Number 相同的重复包不视为错误处理。

2022.03.11 - Message 是如何路由的?

 Message 路由方式有三种,以隐式路由为主,但也支持基于地址或 ID 的路由。TLP Header 中 Type 字段(10r2r1r0)指定了该 Message 的路由方式,如表1。

▼ 表1 Message 路由  

image.png

对于与 RC 之间通信的 Message,RC 为 Message 的发起者或接收者,没必要指定地址和ID,采用隐式路由。目前除了 Vendor Define 的 Message,还没有基于地址进行路由的 Message 类型。

参考

   PCI Express Base Spec 5.0, Chapter 2.

   老男孩读PCIe之七:TLP的路由

   PCIe系列第四讲、TLP的路由方式

2022.03.12 - 收到不支持的 Message 是如何处理的?

回复 UR。不支持的 Message 是指 Message Code 未识别。

2022.03.13 - LTSSM EQ phase0~phase3 都在干啥?

 PCIe LTSSM 链路均衡,即 EQ (equalization),是 LTSSM Recovery 的一个子状态。PCIe 在首次进入 8 GT/s及以上速率时要进行 EQ,调整收发端电气参数以改善信号质量,满足高速信号传输的信号质量需求。

 EQ 有 phase0 ~ phase3 四个阶段。TS1 或 TS2 symbol 6 中包含 EC 字段来指示当前处于 EQ 的哪个 phase。各 Phase 工作内容如下:

   EQ Phase0:EC=0。USP 回传 preset 及 coefficients 给 DSP。DSP 没有 Phase0。

   EQ Phase1:EC=1。DSP 及 USP 发送其 LF (Low Frequency,symbol7)、FS (Full Swing,symbol8) 、Post-cursor (symbol9) 给对端 ,在 phase2/3 使用。

   EQ Phase2:EC=2。USP 作为 Master,调节 DSP 的 Tx 系数。具体可分为 preset 调节及 coefficient 调节。

   EQ Phase3:EC=3。DSP 作为 Master,调节 USP 的 Tx 系数。同 phase2。

 以上四个 phase 中,phase0/1 采用 preset 粗调,phase2/3 精调。如果粗调阶段就达到了信号质量需求,也可以不进行精调。

 除非有特别配置,8 GT/s 以上速率时必须进行 EQ,至少在最高速率上要进行 EQ,中间速率可以跳过 EQ。当然仿真的时候可以设置 bypass_eq,或者设置 bypass_eq_to_highest_rate,仅在最高速率时进行 EQ。比如最高支持 32 GT/s,那么在 8 GT/s,16 GT/s 的时候可以跳过 EQ。从 32GT/s 降速时,需要重新进行 training 并EQ。

参考

   PCI Express Base Spec 5.0,Chapter 4.2.3

   PCI Express学习篇—物理层LTSSM(三) Recovery.Equalization详解

2022.03.14 - PCIe 地址空间有哪几种访问模式?DBI、ELBI、LBC、CDM 是啥?

 PCIe 寄存器访问支持 Wire Access 和 DBI Access 两种模式。Wire Access 是对端 PCIe 访问本地寄存器(CDM 内部寄存器或 ELBI 外部应用寄存器)。DBI Access 是本地 CPU 等 Master 访问本地寄存器。几个概念介绍如下:

   DBI,Data Bus Interface,EP 侧的 CPU 可以通过 DBI 接口 PCIe Controller 的 CDM 内部寄存器,也可以访问 ELBI 外部应用寄存器。

   ELBI,External Local Bus Interface,把 PCIe Controller 收到的 Inbound 寄存器读写请求转发到外部应用寄存器。

   CDM,Configuration-Dependent Module,含标准的 PCIe 配置空间及 PCIe Controller 指定的寄存器空间(端口逻辑寄存器)。

   LBC,Local Bus Controller,EP 的 LBC module 给对端 USP 或本地 CPU 提供一种通过 DBI 访问 CDM 内部寄存器及 ELBI 外部应用寄存器的机制。

ce2d81f49fe441aba65a76f65ba6e273.png

参考

   DWC_pcie_ctl_ep_databook, Chapter 3.5

   PCIE协议解析 synopsys IP DBI and LBC 读书笔记

2022.03.15 - PCIe 热切换和热插拔是什么?

 PCIe 热切换和热插拔是一种在不关闭系统电源情况下更换 PCIe 卡设备的技术,能够确保换卡的同时 PCIe 系统持续不间断的运行。热插拔适用于 PC 及服务器主板上的 PCIe 板卡链接,热切换适用于 Compact PCI。

 PCIe 卡有两个为热插拔而设计的引脚——PRSNT#1 和 PRSNT#2,这两个引脚位于金手指两侧,比其他引脚要短。当 PCIe 板卡被拔出时,这两个引脚能够先于其他引脚检测到板卡正在被拔出。在这两个引脚检测到 PCIe 卡拔出、其他引脚断开连接之前这段时间内,系统软件协同主板热插拔驱动器、PCIe 卡设备驱动以及 PCIe 卡硬件进行热插拔处理,有序切断电源。

参考

   PCI Express Base Spec 5.0, Chapter 6.7

   PCI、PCI-X 和 PCI Express的原理及体系结构,马鸣锦

   PCIe扫盲——热插拔简要介绍

2022.03.16 - MSI 和 MSI-X 是什么?

 MSI 和 MSI-X 都是消息信号中断。它们虽然叫 Message Signaled Interrupt,但它们不是 Message,而是带有 1DW 数据载荷的一笔存储器写事务。

 MSI 能力结构中定义了消息地址(即接收中断的存储器地址,32bit 或 64bit)、消息数据等,不同的消息数据代表不同的中断。MSI 最多支持 32 个中断,这 32 个中断对应唯一的地址。

 随着系统的发展,单一消息地址及最高 32 个中断的现状无法满足需求。MSI-X 对 MSI 做了扩展,最多支持 2048 个中断,且每个中断可以对应不同的地址。为了实现以上功能,MSI-X 能力结构中不再指定单一的消息地址,而是替换为 MSI-X 表地址,这个表中每一个 Entry 对应控制一条中断。

友情链接

   PCIe扫盲——中断机制介绍(MSI)

   PCIe扫盲——中断机制介绍(MSI-X)

2022.03.17 - PCIe 采用了哪些主要的信号补偿技术?

 信号补偿三大技术:发送端预加重(Pre-emphasis)、去加重(De-emphasis)和接收端均衡(Equalization)。预加重、去加重也被称为发送端均衡。各技术基本原理如图 1 所示。

70fce7d2a81244fc8bc69e5d8773e0af.png

▲ 图1 预加重、去加重、接收端均衡原理

 无源传输线路像是一个低通滤波器,PCIe 高速串行信号经信道从发送端传输到接收端后,其高频分量比低频分量衰减要大,而高频分量主要集中在信号的上升沿及下降沿。为了补偿这种高频衰减,在信号发送的时候,有意增强信号跳变沿的信号幅度,增高高频分量,即信号预加重;相比于预加重的方案,去加重则是降低跳变沿之外的信号幅度,削弱低频分量,同样能够达到目的。

 接收端均衡器相当于高通滤波器,来补偿失真的波形。

友情链接

   信号完整性测试两大法宝–加重与均衡

   PCIe扫盲——物理层电气部分基础(二)之De-emphasis

2022.03.18 - Polling.Active 中两端的 1024 个 TS 有什么发送顺序吗?

没有顺序要求。

假设 Compliance Bit = 0,LinkNum = PAD,LaneNum = PAD 。

Detect 完成之后 Tx/Rx 进入 Polling.Active 状态,任一端确保其 Tx 部分稳定后即可发送 TS1,没有先后顺序要求,具体取决于退出 Detect 的时刻。两端 Rx 依据其收到的 TS1 进行位锁定和符号锁定。任一端所有有效 Lane 上发送完 1024 TS1 且收到 8 TS1/TS2 后进入 Polling.Config,改发 TS2。

以相连的 A、B 两个 PCIe 设备为例,重点说下为什么收到 8 TS1 或 8 TS2 :A 发完 1024 TS1 收到 8 TS1 后进 Polling.Config,A 开始发 TS2;A 开始发 TS2 了,B 还处于 Polling.Active,这时候 B 有可能还没完成锁定,那么 B 一个 TS1 都收不到。等完成锁定,收到的已经是 A 发来的 TS2 了。所以收到 8 TS2 也可以进 Polling.Config

2022.03.19 - 本地 Rx 回环的时候恰好碰到对端 Tx 发送 TS1 怎么办,是有什么仲裁机制吗?

如果仅指单个 PCIe 设备 PHY 的 Loopack,其进入 Loopback 模式后,不再接收对端 Tx 发送的 TS1 (通过 Mux 实现)。

如果是两个 PCIe 设备间的 Loopback,两者进入 Loopback 是经过了协商的(Master 发 Loopback=1 的 TS1,Slave 回相同的 TS1),否则不会开始 BIST 测试。即不存在问题所述情况。

2022.03.20 - PCIe 有哪几种 loopback 模式?

PCIe 有三种 loopback 模式:

   Local Digital Loopback (PIPE),单个 PCIe 仅需 Controller 即可完成,没有 PHY 的参与。

   Local Analog Loopback,单个 PCIe 即可完成,需要 Controller,过了 PHY。

   Remote Digital Loopback,需要 Master 和 Slave 两个 PCIe 完成,两端的 Controller 及 PHY 都需参与。

各种模式示意图如图 1 所示。

801890f77c23449c99ba534a6c311f9d.png

没有一种模式叫 Remote Analog Loopback,想想为啥 😆

2022.03.21 - 将 PCIe 从 L2 低功耗状态唤醒有哪几种方式?

有两种方式将 PCIe 从 L2 低功耗状态唤醒:

   WAKE#,是一种 Side-band 信号。

   Beacon, 是一种 30 kHz ~ 500 MHz 的低频 In-band 信号。在 L2 状态时,主电源及时钟都没有,但 Beacon 电路使用的 Aux 电源仍然保留。UPS 发送 Beacon,DSP 接收 Beacon,方向不能反。DSP 检测到 Beacon 后退回到 Detect。

2022.03.22 - PCIe 是如何判断链路处于电气闲的?

PCIe 设备有两种方式来获知当前链路是否处于电气闲状态:

   直接检测:模拟电路直接检测电路是否电气闲。

   间接推测:依据收到的进行推测链路是否处于电气闲。

模拟电路直接检测的方法不必多说。出现以下情况时,PCIe 设备可推测链路处于电气闲。

   L0 状态下,128 us 时间窗内 未检测到流控 DLLP 更新 和/或 未检测到 SKP。

   Loopback.Active 状态下,Loopback Slave 在 128 us 内未检测到退出电气闲(仅 Gen1)。

   Recovery.RcvrCfg 状态下,1280 UI 时间内未检测到 TS1/2 @Gen1/Gen2,4 ms 时间内未检测到 TS1/2 @Gen3+。

   Recovery.Speed 状态下,若上次速率协商成功,1280 UI 时间内未检测到 TS1/2 @Gen1/Gen2,4680 UI 时间内未检测到 TS1/2 @Gen3+。

   Recovery.Speed 状态下,若上次速率协商失败,2000 UI 时间内未检测到 TS1/2 @Gen1,16000 UI 时间内未检测到 TS1/2 @Gen2+。

若此前已经处于电气闲,不可依据推测结果判断是否已经退出电气闲。在具体实现时,为了节省面积,往往在 LTSSM 中统一设置一个 Common Counter 来进行推测,而非每条 Lane 单独设置一个 Counter。

2022.03.23 - 如何知道 TLP Prefix 的长度?

每个 TLP Prefix 固定长度 1DW,其中第 1Byte 是 Fmt 及 Type,用以指明当前为 TLP Prefix。 1 个 TLP Prefix 不够可以继续追加,第二个 TLP Prefix 的第 1Byte 再来一次 Fmt 及 Type。

虽然TLP Prefix 中有 Fmt 及 Type,但那是 TLP Prefix 的,正式 TLP Header 中仍然需要 Fmt 及 Type。

2022.03.24 - EP 如何知道自己的 PASID 值是多少?软件是如何通知 EP PASID 值的?

PASID 是 EP 的本地 ID,由 EP 侧的系统软件进行分配,一般是把进程号用作 PASID。理论上 EP 每个 Function 分到的 PASID 都应该是正交的,但实际上大家似乎没有遵守这个规则。至于软件是如何通知 EP PASID 值的,PCIe Spec 没有明确指出,应该是系统软件写 PCIe Wrapper 中的相关寄存器吧,厂商自行实现。

2022.03.25 - PCIe 加扰解扰时,什么情况下会初始化 LFSR ?

Gen1/Gen2 时,COM 符号初始化 LFSR 为 FFFFh。

Gen3 及以上时,发送/接收完 EIEOS 最后一个 Symbol 初始化 LFSR,lane_num[2:0] 不同初始值也不同。

2022.03.26 - PCIe 有序集什么时候加扰,什么时候不加扰?

Gen1/Gen2 时,K 码不加扰,除 OS 外的 D 码、Compliance Pattern、Modified Compliance Pattern 都需要加扰。为了便于调试,也可以通过 TS sym5 bit3 软件控制关闭加扰功能。

Gen3 及以上时,对于 TS1 及 TS2,Sym0 无需加解扰,Sym1~Sym13 需要加解扰,Sym14~Sym15 根据需要可加解扰可不加解扰,为了 DC Balance 可以不加解扰。

FTSOS、SDS、EIEOS、EIOS、SKPOS 不加解扰。除 SKPOS 外,其他 OS 即便不加解扰,LFSR 也照常推进。

2022.03.27 - PCIe TS1/TS2 是如何实现 DC Balance 的?

对于 Gen1/Gen2 ,8b/10b 编码自带 DC Balance 功能。

对于 Gen3 及以上,128b/130b 只在 Payload 前添加 2bit 同步头,不具备8b/10b那样的 DC Balance 能力,依靠加扰来实现一定程度的 DC Balance。TS1 或 TS2 的 16 个 Symbol 中,Sym0 无需加扰,Sym1~Sym13 需要加扰,Sym14~Sym15 根据 DC Balance 的需要可加扰可不加扰。

为了采用 Sym14、Sym15 实现 DC Balance,每条 Tx Lane 都有一个独立的模块监测其已发送的 bit1 和 bit0 的数量差。当差值达到 511 之后不再继续加,但是可以减少。具体规则如下:

   如果发完 Sym11 后差值 >31,Sym14、Sym15 均不加扰,均用作 DC Balance。若 1 比 0 多,则多发点 0, Sym14 发送 20h(00100000b),Sym15 发送 08h(00001000b);若 0 比 1 多,则多发点 1, Sym14 发送 DFh(11011111b),Sym15 发送 F7h(11110111b)。

   如果发完 Sym11 后差值 >15,Sym14 加扰照常发送 TS 标识符,Sym15 不加扰用作 DC Balance。若 1 比 0 多,则多发点 0,Sym15 发送 08h(00001000b);若 0 比 1 多,则多发点 1,Sym15 发送 F7h(11110111b)。

   如果发完 Sym11 后差值 <=15 时,Sym14、Sym15 均加扰,照常发送 TS 标识符。

   当监测到 EI 或 EIEOS 后,计数器清零。

Rx 可以检测 Sym14、Sym15 的合法性,也可以不检测。

2022.03.28 - LTSSM 中 EQ 相关变量 start_equalization_w_preset 是如何跳变的?

   DSP 进入 EQ 后,start_equalization_w_preset 清零;

   USP 进入 EQ 后,start_equalization_w_preset 清零;

   进入 Recovery.RcvrCfg 后,start_equalization_w_preset 清零,

   a. DSP start_equalization_w_preset 再置一

   b. USP 满足以下情况时 start_equalization_w_preset 置一:

    i.  若当前 2.5 GT/s 或 5 GT/s,且最大支持 8 GT/s

    ii. 若当前 2.5 GT/s 或 5 GT/s,最大支持 32 GT/s 且 bypass_to_highest_rate

    iii.若当前 8 GT/s,且支持 16 GT/s(最大不一定是 16 GT/s

    iv. 若当前 16 GT/s,最大支持 32 GT/s

   

2022.03.29 - 接昨日:当前 USP 为 2.5 GT/s 或 5 GT/s,最大支持 16 GT/s 时,start_equalization_w_preset 该怎么处理?

 USP 当前 2.5 GT/s 或 5 GT/s,最大支持 16 GT/s 时,需要经过两次 EQ 调速,多次调整 start_equalization_w_preset 的值。

   第一次切速进入 Recovery.RcvrCfg 后收到的 TS 中显示最大支持 8 GT/s,符合规则 (i),start_equalization_w_preset 置一,Gen1 -> Gen3 做一次 EQ 进行第一次调速,进入 EQ 后 start_equalization_w_preset 清零 。

   第二次切速进入 Recovery.RcvrCfg 后收到的 TS 中才切为最大支持 16 GT/s,符合规则 (iii),start_equalization_w_preset 置一,Gen3 -> Gen4 做一次 EQ 进行第二次调速,进入 EQ 后 start_equalization_w_preset 清零 。

 也就是说,切速过程为 Gen1 -> Gen3 -> Gen4,每次切速都做一次 EQ。

2022.03.30 - 我 Gen4 速率开启了 Equalization bypass to highest rate,为什么没起作用?

当最高速率为 Gen5 且开启了 Equalization bypass to highest rate 时,只进行一次切速/EQ,即 Gen1 -> Gen5。Equalization bypass to highest rate 是 Gen5 的 Capability,若目标速率为 Gen3/Gen4 且开启了 Equalization bypass to highest rate,不是像 Gen5 那样只在最高速率进行一次 EQ,而是不进行 EQ,直接从 Gen1 -> Gen3/4,没有中间速度。用 VIP 进行仿真时, VIP会报错。

2022.03.31 - RC 和 EP 如何知道它们中间有 Retimer ?

TS2 Symbol 5 有两个 field 来指示是否有 Retimer,TS2 经过 Retimer 时,Retimer 会更改这两个字段。

   Symbol5 bit4 为 Retimer Present Bit,仅在 2.5 GT/s 速率时有效,该位为 1 时表示 RC-EP 间至少有一个 Retimer。

   Symbol5 bit5 为 Two Retimer Preset Bit,仅在 2.5 GT/s 速率时有效,该位为 1 时表示 RC-EP 间至少有两个 Retimer。对于 16 GT/s 及以上速率,必须实现该 field,对 8 GT/s 可选。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值