这个专栏要干的事:学习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是扰码移位寄存器的直接输出没有数据意义。文章来源:https://www.toymoban.com/news/detail-683247.html
文章来源地址https://www.toymoban.com/news/detail-683247.html
到了这里,关于【PCIE系统学习】Gen1/2&Gen3/4 symobl与OrderSet概念对比的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!