Link Initialization & training
Training sequences
训练序列有Ordered Sets组成,用于:
链路初始化和配置;
bit-lock和symble lock;
接收端均衡训练;
链路极性翻转;
block对齐(GEN2
)
bit-lock :CDR(恢复电路)通过数据流获取相位和频率信息
gen1 training sequence rule
1、ordered set不加扰,但需要8b/10b编码;
2、SKP应该在TS1、TS2发送完成前或者后发送;
3、发送TSEQ时(65536次)不能发送SKP;
gen2 training sequence rule
1、训练序列由16个symble组成,遵循128b/132b 编码,加扰(加扰规则见上节);
2、发送TSEQ、TS1、TS2时可以被SKP或者SYNC中断;(与gen1不同,gen1不能被中断
)
3、每发送16384次TSEQ需要发送一次SYNC;
4、每发送32个TS1、TS2需要发送一次SYNC(during Recovery, Polling.Active, Recovery.Configuration, Hot Reset and Polling.Config
)
发送TSEQ(发送524288times)、TS1、TS2时需要DC平衡。
PHY内部需要两个计数器(计数值最小为511),用于计算0比1多的个数(暂时命为counter0),1比0多的个数(counter1)(计数器溢出后保持不变,不能翻转
),当计数完symble11(第12个字符),计数值cnt
根据TS 的结构,应该是对加扰后的值计数,无论是1E、2D还是87,0和1都是均衡的,如果是加扰前,那么计数值就不会超过31
if ( counter0 > 31 ) begin
symble14 = 8'hDF;
symble15 = 8'hF7;
end else if (counter1 > 31) begin
symble14 = 8'h20;
symble15 = 8'h08;
end else if (counter0 > 15) begin
symble14 = default;
symble15 = 8'hF7;
end else if (counter1 > 15) begin
symble14 = default;
symble15 = 8'h08;
end else begin
symble14 = default;
symble15 = default;
end
(default值根据ordered set类型赋值,见下表)
SDS 是gen2定义的,用于Ordered Set Block 到data stream,仅在Polling.Idle, Recovery.Idle, and Hot Reset.Exit状态使用。
gen2 block Alignment
在链路训练时,接收端通过SYNC block来决定接收到的block数据的header的位置。block Alignment分为三个阶段:
Unaligned 接收端检测SYNC OS,检测到SYNC调整对齐,并进入Aligned;
Aligned 接收端监测SYNC,如果监测到的与目前的不一致,则重新调整,直到检测到SDS,进入Lock。如果监测到未定义的HEADER,回到Unaligne。如果接收到超过16个symble的SKP,则重新调整
Lock 这个阶段等待接收DATA Block,不再调整。如果监测到未定义的HEADER,回到Unaligned或者Aligned。如果接收到超过16个symble的SKP,则重新调整
。
Lane Polarity Inversion
gen1
在TSEQ训练时,接收端通过D10.2 symble判断Rxn和Rxp是否交换了,如果接收到的是D21.5,接收到的值需要取反。这步需要在接收端使用symble1-15前完成。如果没有使用TSEQ训练序列,则在TS1完成。
gen2
在SYNC期间,监测SYNC identifier FF (symbols 2, 4, 6, 8, 10, 12, and 14),如果接收到的标识符为00,则反相接收到的值。
Elasticity Buffer and SKP Ordered Set
Enhanced SuperSpeed为异步通信,接收端和发送端时钟独立,时钟频率允许有±300ppm的偏差。此外SSC还规定了δf,最大5000ppm。
gen1 SKP Rules
GEN1 SKP Ordered Set由两个SKP K-Symbol组成,最大可以缓存4个SKP Ordered Set。
发送端计数发送的TS1、TS2 Order,LMP、TP Data Pkt,Logical IDLE,计数值Y除以354大于等于1时,发送SKP Order。(仅在training时,Y/354>=2,允许插入两个SKP Order。为什么缓存是4个SKP Order
)。发送SKP Order前有8个idle symbols。
对于gen1x2,两条lanes需要同时发送SKP Ordered Set
gen2 SKP Rules
GEN2 SKP Ordered Set如下图,接收端可对接收到的SKP Order进行调整:增加加4个SKP Symbols、减少4个SKP Symbols,或者不调整,因此接收到的SKP Symbol肯是4-36个(4的倍数)。在loopback可能是0-56。A transmitted SKP Ordered Set is 24 symbols.应该是SKP Order的源,起始长度为24
发送端使用计数器Y计数发送的block,Z=Y/40(Z代表需要发送的SKP Ordered Set数,值为0、1、2),在发送SKP Order前需要发送SYNC Ordered Set。loopback包含LTSSM,需要发送2*Z个SKP Ordered Set