關於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