——“Start”有两个字符:“STP”表示TLP的开始,“SDP”表示DLLP的开始;来自数据链路层的指示符和数据包类型一起决定插入何种类型的帧字符;还有两个结束字符:End Good character(END)用于正常传输,end Bad character(EDB)用于处理一些错误情况。 ——128b/130b(PCIe Gen)的字符被分组成16个字节的Block,每个Block...
TLP和DLLP的Type(类型)对应着他们的用途。TLP在物理层封装的起始位是STP(Start of TLP),物理层封装的起始位是 SDP(Start of DLLP)。 DLLP(Data Link Layer Packet)报文类型主要分成三类,第一类是用于确认TLP传输完整性的Ack/Nak;第二类是电源通知管理;第三类是用于事务层的流量控制功能。本文只介绍第一类,如...
由于TLP和DLLP的传输对通道顺序有要求,比如STP和SDP必须放置在Lane0,因此链路训练时一侧需要根据各Lane受到的训练序列来翻转其通道顺序,以实现Tx和Rx的通道顺序匹配,当通道顺序翻转时需要翻转所有通道。 一些PCIe金手指有防呆口设计,可以避免通道顺序翻转的情况,但对于焊在主板上的PCIe芯片,可能会出现两端通道顺序相反的...
说了控制字符和Ordered Set,该说一下物理层中Gen1和Gen2数据流的一些规则了。 如果PCIe链路从Logical Idle之后开始数据流的传输时,STP和SDP必须放在Lane0; 如果不是从Logical Idle之后开始数据流传输,STP和SDP可以放在Lane0,4,8等; 在PCIe x2链路中,END/EDB放在Lane1,其他链路中放在Lane3,7,11等; DLLP数据...
每个TLP 都以 STP(TLP 包起始点)标识开始。因此,在解扰器中查找具有 *_start_block = 1 和 *_sync_header= 2 的任何“nF”。 每个STP 标识都是 4 个符号并表示 TLP 的开始。 STP 字段的定义详见下图所示: 以下是 MemWr(存储器写入 TLP)的示例。请注意,这是一个 x4 链接,因此所有内容都被跨越分配。
当然,除了STP、SDP和END之外,还有一些其他的控制字符,如EDB(前面的文章详细介绍过)、SKIP、COM等。如下图所示: Ordered Sets主要用于链路训练等。每一个Ordered Set都是DW对齐(即四个字节),且Ordered Set开头是一个叫做Comma(COM)的K字符(控制字符),随后包含一些K字符或者D字符(数据字符)。
在链路训练阶段,选通 K/D 通道,发送 TS1/TS2/SKIP/EIOS 等有序集进行链路训练;链路训练完毕后,若 DL 层有数据下来,则有序选通 D 通道及 K 通道,在 TLP/DLLP 头尾插入 STP/SDP/END/EDB,插入 SKPOS 等;没有数据下来时,选通逻辑闲 D 通道,发送逻辑闲。
当然,除了STP、SDP和END之外,还有一些其他的控制字符,如EDB(前面的文章详细介绍过)、SKIP、COM等。如下图所示: 前面的文章中提到过Ordered Sets,其主要用于链路训练等。每一个Ordered Set都是按照DW对齐的(即四个字节),且Ordered Set开头也是一个叫做Comma(COM)的K字符(控制字符),随后包含一些K字符或者D字符(数...
当然,这些控制字符只用于物理层之间的传输,接收端的设备的物理层接收到这些数据后,会将这些控制字符去除,在往上传到其数据链路层。当然,除了STP、SDP和END之外,还有一些其他的控制字符,如EDB(前面的文章详细介绍过)、SKIP、COM等。如下图所示:前面的文章中提到过Ordered Set...
※ Start TLP (STP) — followed by a TLP ※ Start DLLP (SDP) — followed by a DLLP ※ Logical Idle (IDLA) — sent when there is no packet activity ※ End of Data Stream (EDS) — Precedes the transition to Ordered Sets ※ End Bad (EDB) — reports a nullified packet has been ...