由于PCIe spec未嚴格限定PHY層Link方式,使得不同的廠家有自己的做法,比如Loongson、X86、PPC都有自己的做法,這給我們調試PCIe裝置相容性帶來了諸多不便。
從目前的兩家主流的PCIe IP供應商 Synopsys、Cadence的IP來說,要相容各家主機闆并非易事。
PCIe spec有講,有建議使用PERST,但未強制。
主流PCIe主機闆廠商:
X86陣營: Intel 、AMD、兆芯
MIPS陣營:Loongson
PPC陣營:NXP
ARM陣營:飛騰、鲲鵬
從不同CPU測試結果來看:
X86陣營大部分是支援PERST,且對于不支援PERST device也有很好的支援,即PERST電平信号會從CPU引出,同時發出主動發起TS1碼流。
ARM陣營測試類似于X86,但有遇到不支援PERST主機闆。
PPC目前測試有一款晶片,對PERST和NO-PERST都支援。
MIPS:有PERST電平信号,但CPU不會主動發起TS1碼流。
主流PCIe Device處理Link Trainning 方法:
1. 依賴于上電host PERST信号進行内部reset.
2. Polling electrical signal,check到對端TS1碼流進行内部的reset.
3. Polling electrical signal,reset内部後直接發起TS1碼流.
目前都有針對 Synopsys、Cadence 調過三種方案或它們的結合,不幸的是都有發現一些弊端,還沒有找到一個完美的解決方案。