【PCIE系统学习】Gen1/2&Gen3/4 symobl与OrderSet概念对比

本文深入探讨PCIe系统的编码方式,包括8B10B和128B130B,详细解析控制Symbol和OrderSet的概念,以及Gen1/2与Gen3/4在lane上的数据传输规则。通过学习,读者将对PCIe设计和验证有更系统理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个专栏要干的事:学习PCIE理论知识,学会PCIE IP/VIP的使用。可以达到上手做项目,而不是空有理论

适合谁看:正在学习PCIE 设计验证,但学的过于零散。想有对比的系统的学习。
低价收费的目的:抵制胡乱传播转载现象。

版本控制:便于增加内容以及勘误

版本说明

v20230829

初始版本

1、8B10B/128B130B编码方式

1.1、8b10b

8b10b编码是为了

1.防止锁相环失锁,导致serdes时钟丢失。

2.防止连续相同电平太多,经过电容积分后导致电平漂移

3.能更好的把时钟嵌入到数据中

8b转10b 256情况->1024种情况,

为了保持直流平衡,设计原8b的每种值,都使用两种编码(正负极性),根据上次发送的最后一个符号的失调来选择其中一个编码,因此需要512个编码。

然而,许多中性失调编码具有相同的值(例如D28.5),因此并非所有512个编码都被使用。

因此,超过一半的可能编码没有被使用,如果接收方看到这些编码,将被视为非法。

除了D数据码。还有一些K控制码: (D码就不写出来了)

D10.3的含义是8B的高三位为d3,低5位为d10。8b码即为:011 01010。

10b编码后的0和1分3种:4个0/6个1,6个0/4个1,5个0/5个1。

10b编码经过并转串之后是低bit先出。如果lane数量不止1条,数据会先布满所有lane。

1.2、128b/130b

说是一种编码,其实更像是一种打包排列。

130bit=128bit symbol + 2bit sync head

这样的130bit称为一个block。其中1symbol=8bit,也就是说在1条lane上接收1个head+16个symbol,也就是接收了1个block。

这样的block有两种类型,分为data block和ordered  set block (OS block)

sync head不会被加扰。

2、控制Symbol

PCIE拥有一些控制字符,作为传输的一些标志。

2.1、8b10b

如下8个symbol,每个占一个8b/10b编码

2.2、128b130b

如下5个Token,每个站不同的Byte数量

3、OrderSet

OrderSet 有序集,它不是TLP/DLLP,是用于链路训练,或者是链路电源管理等。

8b10b和128b120b下拥有的OrderSet基本相同,也都是16个Symbol组成。只不过由于编码方式不同,导致表现上会不一样。

4、OrderSet-TS1/TS2

TS1 TS2 作用

训练序列TS,用于初始化位对齐( initializing bit alignment)、符号对齐(Symbol alignmen)和交换物理层参数( exchange Physical Layer parameters)的有序集组成。当数据速率为 2.5 GT/s 或 5.0 GT/s 时,Ordered Sets 永远不会被加扰,而是始终采用 8b/10b 编码。 当数据速率为 8.0 GT/s 或更高时,使用 128b/130b 编码,需要对其进行加扰。

在进行建链的时候,RP和EP 互相发送TS1、TS2序列 ,来确定两端的情况,每个序列由16个Symbol 组成每个 Symbol 有着不同的含义。

在物理层的LTSSM状态机中,TS1序列和TS2序列的使用发方法不同,TS1、TS2由16个字符(Symbol)组成;TS1序列作用是检测PCIEe 链路的配置信息,而TS2序列确认TS1序列的检测结果。

TS1 TS2如何认为是连续的

使用 8b/10b 编码时,仅当 Symbol 6 与前一个 TS1 或 TS2 有序集Symbol 6 匹配,对于128/130b 则是TS1或TS2 Symbol 6-9 与之前的Symbol 6-9 相匹配。 比如说polling下,TS序列会发1024 个 有8个连续的 发这么多的原因是害怕有误码。

下面两张图片列出了在8b10b(2.5/5GT),128b130b(8GT↑)下,TS1/TS2的内容区别。

5、DLLP和TLP标识

为DLLP和TLP增加标识的目的是方便找到DLLP和TLP的边界

5.1、8b10b

增加Start/End Symbol 即:STP/SDP/END

TLP的加扰

以一个物理层发送TLP为例:一个TLP在通过物理层时,首先要加上物理层的前后缀STP和END的控制字符,无需加扰;

数据链路层前缀、TLP和数据链路层后缀都属于数据字符,需要加扰,并由物理层发向PCIe链路。

5.2、128b/130b

在128B/130B时,使用Token代替了8b/10b时的symbol。且没有end标识,取而代之的是start标识中的length。

6、Gen12/Gen34数据在lane上的规则

6.1、8b10b

如果PCIe链路从Logical Idle之后开始数据流的传输时,STP和SDP必须放在Lane0;如果不是从Logical Idle之后开始数据流传输,STP和SDP可以放在Lane0,4,8等;

在PCIe x2链路中,END/EDB放在Lane1,其他链路中放在Lane3,7,11等;

DLLP数据包长度为8个字符, SDP+6字符+END;

一个数据包结束之后,其他的数据包还没Ready, 这个时候需要PAD字符补位到最后一个Lane;

当数据包传输结束,所有Lane发送Logical Idle字符“idle(00)”;

所有的Lane同时发送Ordered Sets.

6.2、128b130b

1、STP在IDL后,必须从lane0开始。(见第一个block的symbol6)

2、TLP可以跨越block,而不用再次发送STP Token,(见第一个block的symbol6,发起了STP Token,开始了TLP传输,直至第一个block的symbol15,该TLP并没有传完,需要切到下一个block,下一个block则直接发送剩余数据,不用新起STP Token。)

3、EDB坏包,我们假设第一个block的Symbol6是个坏包,那么TLP末端就会加上EDB Token,表明此TLP已无效。

4、EDS:分割Data block和OS block。EDS代表一个Datablock的结束,接下来的是OSblock。

5、关于SKP OS(SOS),SOS允许一个block不足16或多于个symbol。可以有8,12,16,20,24个。如果凑不齐最小值8的话,就要用LFSR补全,LFSR是扰码移位寄存器的直接输出没有数据意义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搞IC的那些年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值