宋林峰,沈 鑫,應雯漪,田元波,張秀均,季振凱
(無錫中微億芯有限公司,江蘇無錫 214072)
隨著通信系統的日新月異和數據信息流量的爆發式增長,相關通信協議在推陳出新的同時,對數據傳輸速率的要求也越來越高。國際上基于高速串并收發器(SerDes)的串行數據傳輸速率已向56 Gbit/s 甚至112 Gbit/s 發展,隨之而來的是高速SerDes 功能、性能參數復雜度的提升,因此針對高速SerDes 的高效調試方法成為必須要研究的重要課題。
高速SerDes 一般都包含可測性設計(DFT)[1],傳統的高速SerDes DFT 方法主要有兩種:一種是基于JTAG 的邊界掃描法;另一種是內建自測試(BIST)。這兩種方法已經普遍用于高速SerDes 的設計和測試,但這兩種方法主要測試一些內部基本功能,許多外部參數如發送端眼圖、抖動[2],接收端抖動容限等都無法獨立測試。針對這些外部參數一些研究人員提出了基于ATE 測試的方法[3],利用自動測試設備(如V93000[4])和誤碼率分析儀進行測試,但主要考慮的是SerDes 測試覆蓋率的提升,并不適用于SerDes 應用中的調試。以上三種方法均不能對SerDes 的參數進行動態調整,因此在一段測試碼中只能測試小部分功能和參數,對于需要調節SerDes 多個參數的情況,需要配置多個測試碼,測試時間會大大延長。Xilinx 作為FPGA 行業的領導者也提供了針對其高速SerDes IP 的測試和調試方案——集成式誤碼率分析器(IBERT),但IBERT 作為一個軟核,只集成在Xilinx 的產品當中,且需要用到FPGA 中的集成邏輯分析核(ILA)、集成控制核(ICON)以及專用調試軟件ChipScope,因此不適用于很多自主國產SerDes 和通用SerDes。
本文提出了一種基于串口的高速SerDes 調試方案,相比于傳統SerDes 測試方法更加高效,方便測試和應用人員進行調試,同時更具通用性。該方案在本公司研發的集成13.1 Gbit/s 高速SerDes 的FPGA 芯片上實現了驗證。
常見的高速SerDes 都包括接收器和發送器兩部分,這兩部分均由物理媒介適配層(PMA)和物理編碼子層(PCS)組成[5],典型電路結構如圖1 所示。

圖1 典型高速串行收發器電路結構
高速SerDes 的本質是串并轉換,將并行數據通過編碼轉換成帶時鐘信號的串行數據,經過必要的信道通路進行高速傳輸后,再通過解碼轉換成并行信號進行處理。所以基本的高速SerDes 主要包括串化器、編解碼、解串器等部分,但要實現串行信號高速穩定地傳輸,發送端還包括時鐘架構、相位對齊先入先出模塊、極性控制模塊、預加重和去加重等模塊,接收端包括時鐘恢復電路、均衡器、彈性緩沖器等。這些電路模塊都有對應的參數和控制指令,這些參數和指令在高速SerDes 的調試中至關重要。表1 為SerDes 中各模塊參數對照表(僅列出小部分常用參數),經統計SerDes 測試和調試中可能需要配置和修改的參數多達幾百條。

表1 典型SerDes 各模塊參數對照表
2.2.1 JTAG 邊界掃描測試
JTAG 聯合測試行動組是一種芯片內部測試中的DFT 測試協議,邊界掃描是JTAG 的一種應用[6]。通常高速SerDes 均采用JTAG 進行配置,通過TDI、TMS、TCK、TDO 將 SerDes 的參數信息下載進去。SerDes 中的JTAG 邊界掃描結構如圖2 所示。一般SerDes 都是易失性的,且不具備存儲能力,因此不同的參數配置就要對應不同的配置碼,所以當SerDes 參數較多時,配置碼的數量也會很多。

圖2 SerDes 中的JTAG 邊界掃描結構
2.2.2 BIST 內建自測試
內建自測試的原理是將測試置于待測芯片內部,在內部完成測試數據的輸入和測試結果的輸出,以及結果正確與否的判斷。圖3 為SerDes 中的內建自測試原理圖[7],對于獨立SerDes 芯片來說BIST 可以在SerDes 內部,如2.1 節中的典型高速SerDes 電路中的PRBS[8]產生模塊以及PRBS 檢測模塊,有了這兩個模塊就可以進行數據環回測試,并在內部進行簡單的判斷。對于作為IP 核的SerDes 來說,例如集成在FPGA內,BIST 可以通過收發器之外的其他邏輯資源建立,產生數據輸入并對數據輸出進行檢測,從而達到自測試的目的。一般BIST 只能進行內部功能測試,對于外部激勵和壓力無法進行測試,同時所需測試向量也很多。

圖3 SerDes 中的內建自測試原理
IBERT 集成式誤碼率分析器是Xilinx 推出的用于調試其FPGA 產品集成高速SerDes 模塊的IP 工具,其用戶界面及實現原理如圖4 所示。

圖4 IBERT 用戶界面及實現原理
IBERT 使用 Xilinx 專用調試軟件 ChipScope 對SerDes 進行配置,通過JTAG 和集成邏輯分析核ILA以及集成控制核ICON 對SerDes 進行動態控制,表現在用戶界面上即 MGT/BERT 設置、DRP 設置、Port 設置、RX 邊際分析 4 個部分[9],可以對 SerDes 大部分參數進行查看和設置,從而達到硬件調試的目的。但對于未集成ILA 和ICON 甚至動態可重構端口(DRP)模塊的SerDes 來說,IBERT 就成了一種有諸多限制的調試高速SerDes 的途徑,適用范圍較窄。
本文提出了一種基于串口的高效調試方案,其原理如圖5 所示。1)將SerDes 的主要參數分成兩部分,一部分與DRP 模塊建立映射關系,一部分從SerDes的端口(PORT)進行配置;2)將DRP 和端口分別與串口建立協議關系,分為讀寫兩種指令和地址,然后生成帶BIST 的配置程序;3)上位機通過JTAG 將配置程序下載到SerDes 中,SerDes 開始在初始默認模式和參數下工作,然后通過外部儀器為SerDes 提供參考時鐘并進行功能、性能檢測如眼圖測試等;4) 根據SerDes 的實時情況和調試需要,在不中斷SerDes 和BIST 工作的情況下,通過串口對SerDes 進行動態讀寫配置,調整其參數。

圖5 本文提出的調試方案原理
因為本項目SerDes 為FPGA 內部IP,所以本文以此類SerDes 為例,但調試方案適用于各類SerDes,包括不帶DRP 功能的SerDes,本項目設計的SerDes 集成了動態重配置模塊,這樣可以減少串口協議的復雜度,減少地址深度。對于沒有DRP 的SerDes,所有參數都從端口與串口協議地址進行映射,同樣可以實現動態配置,實現高效調試。
本文提出的SerDes 高效調試方案基于串口實現,因此需要進行相應的串口協議與指令的設計。圖6 是本文提出方案的串口協議架構,主要由頂層控制模塊、串口收發端口定義模塊、DRP 讀寫和Port 讀寫模塊構成,圖中還列舉了部分典型SerDes 參數與地址的映射關系,以及占用的位寬。
表2 列出了本文提出方案設計的串口指令,主要包括 DRP 讀寫指令、DRP 地址、Port 讀寫指令、Port 地址,以及所有操作的狀態指令。

圖6 本文提出方案的串口協議架構
DRP 相關指令:DRP 地址位寬設置為8 bit,主要使用地址0x02~0xAD,因此串口傳輸DRP 地址時只傳輸8 bit 的地址位;當串口狀態在DRP 讀寫時,如果接收串口傳遞的地址不在0x02~0xAD 范圍內,會被判斷為無效地址,此時若處于寫狀態,后續接收的DRP數據會被忽略,若處于讀狀態,將不會接收到DRP 數據,FPGA 將通過串口返回值0x53 標識指令錯誤;當接收到的地址有效時,若在讀狀態則先后返回地址內DRP 值的高 8 位和低 8 位,若在寫狀態,FPGA 接收完成DRP 值,并等待DRP 寫入完成后,將返回值0x52標識寫操作完成。

表2 本文提出方案設計的串口指令
PORT 相關指令:對于端口參數,將需要調試的SerDes 的Port 參數從0x00 以遞增順序進行編號,并在程序內規定最大值;在PORT 參數操作時,若接收到的PT_ADDR 值不在定義的最大值范圍內將直接返回值0xA3,標識錯誤;反之,當寫操作時,在完成參數數據變化后將返回0xA2 標識寫操作完成,或處于讀操作時返回當前參數數值。
Steps 狀態指令:主要分為5 個Steps,所有的讀寫操作必須以Step1 中制定的數值作為起始,當不處于任意操作狀態中時,除這4 條指令外的任意數據將被忽略。
對基于本項目研發的集成13.1 Gbit/s 高速SerDes核的FPGA 進行驗證,SerDes 結構與第2 節給出的結構基本一致,不包含ILA 和ICON 模塊,且FPGA 資源有限,無法使用IBERT。使用本文提出的基于串口的調試方案進行試驗驗證,測試環境如圖7 所示。
串口模塊使用RS232 模塊?;诒疚姆桨搁_發的串口程序可以動態調整的參數主要包括:LOOPBACK、TX 預加重和去加重參數、TX 擺幅、均衡參數、RXTX 阻抗匹配參數等,覆蓋了2.1 節表1 中的所有參數。在用示波器和誤碼儀監測TX 眼圖等參數的同時可以進行動態調節。例如初始條件下TX 眼圖反射較大,通過串口動態調試SerDes 的參數,快速定位出是因阻抗不匹配導致,并快速調節至最佳值(阻抗等級有 16 級可調)。 調節阻抗匹配參數TERM_RCAL_CFG 和 TERM_RCAL_OVRD 前 后 的眼圖對比如圖8 所示。

圖7 本文使用的高速SerDes 測試環境
最后對比不同方案的SerDes 測試能力,包括可測參數、是否需要外部儀器、適用范圍以及所需測試向量的數量,如表3 所示。
表3 中內部功能參數主要指近端環回、不同數據位寬、不同線速率等功能,多是PCS 的功能和性能參數;接收和發送所有參數是指除內部功能參數之外,還包括TX 發送端眼圖、抖動、接收端抖動容限、均衡、遠端環回等PMA 和PCS 的功能和性能參數。需要測試向量數是根據表1 所列的常用參數計算,要覆蓋這些參數所需的測試向量數。從結果可以看出,本文提出方案大大減少了所需測試向量數,相比傳統JTAG和BIST 方法大大提高了調試效率,且比IBERT 適用SerDes 范圍大得多,具有普適性。

圖8 阻抗匹配參數調節前后的眼圖對比

表3 不同方案SerDes 測試情況對比
本文提出的基于串口的SerDes 調試方案,在傳統JTAG 和BIST 方法的基礎上設計了串口協議,建立了上位機與SerDes 參數和控制位的映射關系,最終用很少的測試向量實現了所有參數的配置和動態調試,在繼承JTAG 和BIST 優點的同時,大大提高了SerDes調試效率,并具有通用性,方便各類SerDes 的應用和測試。