scramble通过LFSR(Linear Feedback Shift Register)来实现。
在发送端,数据先scramble,然后在进行8b/10b编码;在接收端,数据先进行8b/10b解码,然后再de-scramble。
对于2.5gbps/5.0gbps,scramble LFSR的多项式是:G(X)=X^16 + X^5 + X4 + X^3 + 1
scramble规则:
1. COM symbol初始化LFSR
2. LFSR value is advanced eight serial shifts for each symbol except SKP
3. 除OS外的所有数据symbol(D码),Compliance Pattern, Modified Compliance Pattern都要scamble。
4. 所有的K码不需要scramble。
5. LFSR的初始seed是FFFF。当COM字节从Transmit LFSR发出后,LFSR立即被初始化;每当COM进入Receive LFSR,接收端的LFSR立即初始化。
6.Scramble只能在Configuration状态结束时disable。
7.Scramble不应用在loopback slave。
8.scramble在Detect状态时总是默认enabled.
对于8Gbps
LFSR多项式:G(X) = X^23 + X^21 + X^16 + X^8 + X^5 + X^2 + 1
Scramble规则:
1. 2bit的sync header不用scramble,也不advance LFSR。
2.EIEOS的所有16symbol都跳过scramble,在发送完EIEOS的最后一个symbol后,将scramble LFSR初始化,在收到EIEOS最后一个symbol后,将descramble LFSR初始化。
3. TS1/TS2的symbol 0跳过scramble, symbol 1-13需要scramble,symbol 14/15在需要DC Balance时跳过scramble,否则进行scramble。
4. FTS的所有16个symbol都不用scramble
5. SDS的所有16个symbol都不用scramble
6. EIOS的所有16个symbol不用scramble
7.SKP的所有symbol都不用scramble
8. 发送所有的OS(SKP除外)symbol时都会advance LFSR,对于SKP的所有symbol,LFSR都不会advance。
9. 接收端通过OS的symbol 0来决定是否要advance LFSR,如果symbol 0时SKP,LFSR在这个block都不用advance,否则LFSR在这个block都需要advance
10. Data block的所有16 symbol都会scramble,并advance LFSR。
11. symbol scramble的顺序是,从低位到高位。
12. LFSR seed与在进入Configuration.Idle后分配的Lane number有关,各条Lane不一样。
13. 使用128b/130b时,不能再Configuration.Complete状态中disable Scramble。
14. Loop back slave不要descramble或scramble loop-back bit stream。
标签: pcie