PCIe時鐘偏差補償 (Clock Tolerance Compliance)

 

PCIe 時鐘偏差出現的原因

爲了減少EMI電磁輻射,芯片廠家往往會對時鐘進行擴頻(Spread Spectrum Clocking,SSC)。即便不進行SSC,受限於PLL工藝,時鐘頻率也很難做到與期望頻率完全一致。這樣一來,PCIe發送端與接收端存在時鐘偏差,尤其是頻率偏差。當收發端時鐘存在偏差時,如果不對時鐘偏差進行補償,收發端比特速率不匹配勢必會導致數據包接收出錯。

PCIe 時鐘偏差補償

爲了實現收發端間的有效數據包正確傳輸,PCIe採用插入SKIP有序集的方式來對時鐘偏差進行補償。發送端(Tx)週期性地在傳輸lane上發送SKIP有序集,接收端(Rx)接收SKIP有序集並存入其彈性緩存(elastic buffer)中。Rx通過這種刪除/插入SKP的方式,來達到補償時鐘偏差的目的。

8b/10b

8b/10b編碼時(Gen1/Gen2),Tx發送的SKIP有序集由4個符號組成,以COM符號開始,後面跟着3個SKP符號。若Tx速率快於Rx,Rx從SKIP有序集中刪除一個SKP;若Tx速率慢於Rx,Rx從SKIP有序集中插入一個SKP。Rx接收的SKIP有序集爲1*COM+(1~5)*SKP。Tx發送有序集的時間間隔爲1180~1538符號。

128b/130b

128b/130編碼時(Gen3/Gen4/Gen5),Tx發送的SKIP有序集由16個符號組成。Rx接收的SKIP有序集可以爲8,12,16,20,24符號。Tx發送有序集的時間間隔爲370~375符號。

跟8b/10b下的SKIP有序集相比,128b/130b時的有序集是16SKP+1SKP_END(or SKP_END_CTL) + 3*other symbol。SKP symbol值爲0xaa@gen3, 0x99@gen4/gen5。SKIP_END symbol值爲0xe1,SKP_END_CTL值爲0x78。

Tx端發送SKIP有序集的原則:
1. 最快1180/370個符號週期、最慢1538/375個符號週期需發送一次SKIP有序集;
2. 多條lane上的SKIP有序集需同時發送,必要時可用PAD字符填充;
3. 發送SKIP有序集不能打亂正常包的發送(即需在包的邊界進行插入),發送長包時可在長包發送完城後可集中一次發送多個SKIP有序集;
4. 發送邏輯閒時仍需發送SKIP有序集;
5. Low Power狀態時SKIP interval timer需復位。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章