关于pcie 3.0的128B/130B编码


128B/130B是指在128bit前面加上2bit的sync header来组成130bit的block.sync header可以用来指示该block为data block(10b)或Order set block(01b)。注意sync header只是data block的alignment,后面可以跟framing token也可以跟data payload。

 

下面介绍一个特殊的Ordered Set, EIEOS。

在link training期间,接收端利用EIEOS来判断block sync header的位置。

首先可以将接收端分为三个状态:unaligned, aligned, locked.

unaligned: 接收端在electrical idle之后进入这个状态,例如当link rate切换到128/130,或退出low power state,或被定向至这个状态,这时,接收端会监测EIEOS,如果检测到,就调整对齐位置,进入到aligned状态。

aligned: 接收端监测EIEOS和SDS(start data stream) Ordered Set。如果收到EIEOS则调整对齐位置,收到SDS则进入Locked。如果收到未定义的sync header(00b or 11b),则返回unaligned。

Locked: 在这个状态下,接收端不会再调整对齐位置,而是准备接收跟在SDS之后的Data block。 如果收到未定义的sync header, 则会退回unaligned或aligned状态。

但是,在aligned和Locked状态下,接收端如果收到了SKP OS,则必须调整alignment。

在LTSSM进入Recovery状态后,接收端在收到EIEOS之前将会忽略掉所有的TS OS。如果是EIEOS引起LTSSM从L0进入到Recovery,则在没有再次收到EIEOS的情况下,接收端可以选择处理或者忽略TS。

 

128B/130B的Framing Token

IDL : logical idle。长度为1symbol(8bits), 当没有其他的TLP/DLLP/Framing Token传输时,就传输IDL,即IDL用来填补Data block中的空白。

SDP : start of DLLP,长度2symbol,后面跟DLLP

STP : start of TLP, 长度为4symbol,包含有12bit的sequence number,和11bit的TLP length, 后面跟TLP。

EDB : end bad。4 symbol,用来表示前面的TLP无效。

EDS : End of data stream, 4 symbol,表示接下来是OS block。

STP/SDP must not be transmitted more frequently than once per symbol time的意思是,由于当lane数量大于4时,同一个symboltime可以传大于4 byte的数据,这里面不能有两个STP或者两个SDP。

在EDS之后收到的必须是SKP/EIOS/EIEOS.

如果收到IDL,对于lane小于4的link,只有下一个symbol time收到的token才会处理,同一个symbol time, 协议上不强制检查IDL之后收到的是否是IDL token。对于大于8lane的link,在IDL之后第一个处理的Token是在IDL之后以DW对齐的lane上。注意同一个symbol time中,IDL之后跟随的应该是IDL或者EDS。

 

scramble:

不需要进行scramble的有:

2bits sync header;

EIEOS;

TS1/TS2 的 Symbol 0;TS1/TS2的14/15 symbol在需要DC balance时也不需要scramble;

FTS;

SDS;

EIOS;

SKP;

 

SDS只在Configuration.Idle,Recovery.Idle,TxL0s.FTS以及loopback master传输。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM