賽靈思中國SystemIO專家FAE 楊寧
FPGA SERDES的應用需要考慮到板級硬件,,SERDES參數(shù)和使用,應用協(xié)議等方面,。由于這種復雜性,,SERDES的調(diào)試工作對很多工程師來說是一個挑戰(zhàn)。本文將描述SERDES的一般調(diào)試方法,,便于工程師準確快速定位和解決問題,。
1. 硬件檢測
硬件檢測可以分為原理圖/PCB檢查和板上硬件檢查。這一部分的工作相對簡單,,但是很多時候問題是由這些看起來很不起眼的地方導致的,。
a) 原理圖/PCB檢查
根據(jù)SERDES應用手冊要求檢查原理圖和PCB設計。例如對于Xilinx 7系列GTX/GTH SERDES,,可以參考UG476的Board Design Guidelines檢查原理圖和PCB設計,。
b) 板上硬件檢查
使用示波器/萬用表等儀器設備實際測量板上硬件,確認提供給SERDES的工作環(huán)境正常,。
i. 檢查電源的電壓/精度/紋波/上電順序是否符合數(shù)據(jù)手冊的要求,。例如對于Xilinx 7系列GTX SERDES,需要對照DS182檢查,。
ii. 檢查SERDES參考時鐘頻率/擺幅是否符合數(shù)據(jù)手冊的要求,,以及參考時鐘的管腳位置是否正確。
iii. 物理通道的檢查,,例如確認AC耦合電容的容值是否正確,,光模塊是否兼容,,焊接是否正常。
2. 使用IBERT
IBERT是一個強有力的調(diào)試工具,,可以用于調(diào)整參數(shù)設置和確認系統(tǒng)余量,,也可以用于故障現(xiàn)象判斷。IBERT在CORE generator里產(chǎn)生工程和BIT文件,。將BIT文件下載到FPGA后,,使用ChipScope Analyzer連接到FPGA上,就會出現(xiàn)IBERT的GUI調(diào)試界面,。
a) 檢查PLL是否LOCK,,如果沒有,需要檢查時鐘和電源,。比如時鐘頻率是否正確,,SERDES是否選擇了正確的時鐘源。
b) 將SERDES的TX和RX設為相同的數(shù)據(jù)pattern,,例如PRBS-31,。設置SERDES為Near-end PMA模式。如果這一步不能工作,,檢查TX/RX極性是否反轉(zhuǎn),;檢查TXUSRCLK/TXUSRCLK2/RXUSRCLK/RXUSRCLK2上的時鐘頻率是否正常。通過這一步保證SERDES內(nèi)部工作正常,。
c) 將SERDES設置為Far-end PMA和Far-end PCS模式,,確認遠端設備的SERDES是否收發(fā)正常。通過這一步排除和時鐘OFFSET相關的問題,。
d) 如果這些步驟工作正常,,但是誤碼率很高,有可能是參數(shù)設置有問題,。需要通過調(diào)整TX/RX的參數(shù)設置來解決,。也可以通過EYE SCAN功能來得到最佳設置和判斷系統(tǒng)余量。
3. 通用的調(diào)試步驟
通常會使用一定的調(diào)試步驟來定位問題,,避免重復工作,。一開始,一般不進行整個工程的測試,,而是基于SERDES的Wrappers工程,,以方便定位問題。一般可以使用CORE generator里的Transceivers Wizard產(chǎn)生的Example Design,。在Core generator里產(chǎn)生Transceivers Wizard的Example Design后,,會輸出源文件和scripts。利用scripts可以直接產(chǎn)生運行結(jié)果,。Example Design里的數(shù)據(jù)產(chǎn)生和檢測都是基于BRAM,,可以很方便的修改數(shù)據(jù),。在工程里面,Chipscope VIOs and ILAs必須被加入到工程里面,,進行控制和調(diào)試分析,。
a) 進行Near-end PCS測試。
i. 啟動SERDES復位(VIO),。
ii. 確認復位結(jié)束(VIO),。
iii. 檢查SERDES狀態(tài)信號(VIO)。
iv. 使用計數(shù)器確認時鐘頻率(VIO),。
b) 進行Near-end PMA測試,。
i. 確認CDR工作正常,檢測CDR產(chǎn)生的恢復時鐘(VIO),。
ii. Comma alignment和8B/10B狀態(tài)檢查(ILA),。
c) 正常操作檢測
i. 確認clock correction電路狀態(tài)(ILA)。
ii. 確認Channel bonding電路狀態(tài)(ILA),。
iii. 鏈路通訊檢查(ILA和VIO),。