2022.05.01 - First DW BE、Last DW BE 是什么?
First DW BE 和 Last DW BE 是 Memory 读写请求 TLP Header 中的一个字段,指示读写请求数据载荷中的第一个及最后一个 DW 中的数据 Byte 是否有效。First DW BE[3:0] 对应第一个 DW 的 Byte[3:0],Last DW BE[3:0] 对应最后一个 DW 的 Byte[3:0],如图 1 所示。
若 BE 某 bit 为 0,表示该 byte 数据不能写入 Memory 或不可预取、不可读。若请求长度大于 1 DW,First DW BE 不能为 0;若请求长度等于 1 DW,Last DW BE 只能为 0;First/Last DW BE 的 4 bit 可以不连续。对于 Zero Read/Write,First/Last DW BE 均为 0。
▲图 1: First/Last DW Byte Enable 位置对应关系
2022.05.02 - PCIe Scrambling 中有哪两种 LFSR 方案?
PCIe Scrambling 中常用的两种 LFSR 方案为 Separated LFSR 与 Shared LFSR。
Separated LFSR 方案,或称 Individual LFSR,是指 PCIe 链路中每条 Lane 都单独配一个 LFSR 进行 Scrambing,各条 Lane 的 LFSR 有自己的 Seed。 其原理图如图 2 所示。
Shared LFSR,从名字也看得出来,共享的 LFSR,是指 PCIe 链路中所有链路共享同一 LFSR,不同 Lane 采用不同的抽头点位,其原理图如图 3 所示。
▲图 2: Individual LFSR 原理图
2022.05.03 - 为什么要关闭加扰 Scrambling?
默认情况下 Scrambling 是打开的。Scrambling 的确有很多好处,比如减低 EMI,但在设备调试阶段,工程人员想要更容易地查看传输的数据,数据 Scrambling 无疑增加了数据辨识难度。为了更容易地查看传输数据,可以选择关闭 Scrambling 功能。只能在链路训练的 Configuration.Complete 阶段通过发送 Disable Scrambing 位(Symbol 5 Bit 3)为 1 的 TS1 或 TS2 来关闭对端的 Scrambling 功能,且只能在 8b/10b 编码期间来关闭 Scrambling。
2022.05.04 - 128b/130b 编码时,Sync Header 和 TS Symbol 0 不做 Scrambling,不会影响 DC Balance 吗?
128b/130b 编码时 Sync Header 和 TS Symbol 0 不做 Scrambling,不会影响 DC Balance。Sync Header 为 01b 或 10b,TS Symbol 0 为 1Eh(00011110b),0、1 数量相同,本身已经实现了 DC Balance。
022.05.05 - PCIe 是如何检测块对齐丢失的?
在链路训练期间,若 Rx 检测到了未定义的 Sync Header,则认为块对齐丢失(Loss of Block Alignment)。块对齐丢失是因为 Rx Block Alignment 失败,需要重新回退到 Unaligned Phase 进行块对齐。
2022.05.06 - STP 中的 FCRC 和 FP 都是干啥的?
STP,Start of TLP,在 128b/130b 编码 Data Block 中指示开始发送 TLP 的 Frame Token,如图 2 所示。该 Token 中携带有接下来要发送的 TLP Length 及 TLP Sequence Number。TLP Length 是个相当重要的字段,为了保护该字段,STP 中规划了 FCRC (Frame CRC) 及 FP (Frame Parity) 两个字段来对 TLP Length 进行保护。
FCRC 通过 10 Bit TLP Length 按照一定算法计算获得,只保护 TLP Length,能够检测出 2 Bit 错误。常规 FP 奇偶校验则是校验 TLP Length 及 FCRC 字段,缩减版 FP 只检验 TLP Length 中的特定位,能够检测出奇数位的 Bit 错误。
▲图 4: STP Frame Token
2022.05.07 - EIOS 截断是什么?
128b/130b 编码时,EIOS 由 16 个 66h 组成。若当前发送的 EIOS 之后紧接着还有 EIOS,那么必须发送完完整的 16 个 66h 当前 EIOS 才算发送完毕。若发送完当前 EIOS 接下来便进入电气闲,那么发送完 14 个 66h 后就可以停止发送 剩下的 66h,仍认为当前 EIOS 发送完毕,称为 EIOS 截断。
EIOS 截断是为了解决 128b/130b 编码期间发送端可能存在的符号边界上的时钟边界不对齐情况。EIOS 截断不会影响接收端对 EIOS 的判断,因为接收端只需要收到 6 个 EIOS 就可以做出接收到 EIOS 的判断了。
2022.05.08 - 如果发送的 FTS 不够,导致从 L0s 回退到 L0 失败了怎么办?
从 L0s 回退到 L0 时,Tx 发送 N_FTS 个 FTS。如果 Rx 在此期间实现了位锁定、符号锁定及块对齐,那么能够成功 回退到 L0。如果 Rx 再次期间没有完成位锁定、符号锁定及块对齐,那么 Rx 会超时退到 Recovery,沟通加大 N_FTS,在 Recovery 阶段完成未完成的锁定及对齐工作,然后进入 L0。
2022.05.09 -
2022.05.10 -
2022.05.11 -
2022.05.12 -
2022.05.13 -
2022.05.14 -
2022.05.15 -
2022.05.16 -
2022.05.17 -
2022.05.18 -
2022.05.19 -
2022.05.20 -
2022.05.21 -
2022.05.22 -
2022.05.23 -
2022.05.24 -
2022.05.25 -
2022.05.26 -
2022.05.27 -
2022.05.28 -
2022.05.29 -
2022.05.30 -
2022.05.31 -