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