宋林峰,沈 鑫,應(yīng)雯漪,田元波,張秀均,季振凱
(無錫中微億芯有限公司,江蘇無錫 214072)
隨著通信系統(tǒng)的日新月異和數(shù)據(jù)信息流量的爆發(fā)式增長,相關(guān)通信協(xié)議在推陳出新的同時,對數(shù)據(jù)傳輸速率的要求也越來越高。國際上基于高速串并收發(fā)器(SerDes)的串行數(shù)據(jù)傳輸速率已向56 Gbit/s 甚至112 Gbit/s 發(fā)展,隨之而來的是高速SerDes 功能、性能參數(shù)復(fù)雜度的提升,因此針對高速SerDes 的高效調(diào)試方法成為必須要研究的重要課題。
高速SerDes 一般都包含可測性設(shè)計(DFT)[1],傳統(tǒng)的高速SerDes DFT 方法主要有兩種:一種是基于JTAG 的邊界掃描法;另一種是內(nèi)建自測試(BIST)。這兩種方法已經(jīng)普遍用于高速SerDes 的設(shè)計和測試,但這兩種方法主要測試一些內(nèi)部基本功能,許多外部參數(shù)如發(fā)送端眼圖、抖動[2],接收端抖動容限等都無法獨立測試。針對這些外部參數(shù)一些研究人員提出了基于ATE 測試的方法[3],利用自動測試設(shè)備(如V93000[4])和誤碼率分析儀進(jìn)行測試,但主要考慮的是SerDes 測試覆蓋率的提升,并不適用于SerDes 應(yīng)用中的調(diào)試。以上三種方法均不能對SerDes 的參數(shù)進(jìn)行動態(tài)調(diào)整,因此在一段測試碼中只能測試小部分功能和參數(shù),對于需要調(diào)節(jié)SerDes 多個參數(shù)的情況,需要配置多個測試碼,測試時間會大大延長。Xilinx 作為FPGA 行業(yè)的領(lǐng)導(dǎo)者也提供了針對其高速SerDes IP 的測試和調(diào)試方案——集成式誤碼率分析器(IBERT),但I(xiàn)BERT 作為一個軟核,只集成在Xilinx 的產(chǎn)品當(dāng)中,且需要用到FPGA 中的集成邏輯分析核(ILA)、集成控制核(ICON)以及專用調(diào)試軟件ChipScope,因此不適用于很多自主國產(chǎn)SerDes 和通用SerDes。
本文提出了一種基于串口的高速SerDes 調(diào)試方案,相比于傳統(tǒng)SerDes 測試方法更加高效,方便測試和應(yīng)用人員進(jìn)行調(diào)試,同時更具通用性。該方案在本公司研發(fā)的集成13.1 Gbit/s 高速SerDes 的FPGA 芯片上實現(xiàn)了驗證。
常見的高速SerDes 都包括接收器和發(fā)送器兩部分,這兩部分均由物理媒介適配層(PMA)和物理編碼子層(PCS)組成[5],典型電路結(jié)構(gòu)如圖1 所示。
圖1 典型高速串行收發(fā)器電路結(jié)構(gòu)
高速SerDes 的本質(zhì)是串并轉(zhuǎn)換,將并行數(shù)據(jù)通過編碼轉(zhuǎn)換成帶時鐘信號的串行數(shù)據(jù),經(jīng)過必要的信道通路進(jìn)行高速傳輸后,再通過解碼轉(zhuǎn)換成并行信號進(jìn)行處理。所以基本的高速SerDes 主要包括串化器、編解碼、解串器等部分,但要實現(xiàn)串行信號高速穩(wěn)定地傳輸,發(fā)送端還包括時鐘架構(gòu)、相位對齊先入先出模塊、極性控制模塊、預(yù)加重和去加重等模塊,接收端包括時鐘恢復(fù)電路、均衡器、彈性緩沖器等。這些電路模塊都有對應(yīng)的參數(shù)和控制指令,這些參數(shù)和指令在高速SerDes 的調(diào)試中至關(guān)重要。表1 為SerDes 中各模塊參數(shù)對照表(僅列出小部分常用參數(shù)),經(jīng)統(tǒng)計SerDes 測試和調(diào)試中可能需要配置和修改的參數(shù)多達(dá)幾百條。
表1 典型SerDes 各模塊參數(shù)對照表
2.2.1 JTAG 邊界掃描測試
JTAG 聯(lián)合測試行動組是一種芯片內(nèi)部測試中的DFT 測試協(xié)議,邊界掃描是JTAG 的一種應(yīng)用[6]。通常高速SerDes 均采用JTAG 進(jìn)行配置,通過TDI、TMS、TCK、TDO 將 SerDes 的參數(shù)信息下載進(jìn)去。SerDes 中的JTAG 邊界掃描結(jié)構(gòu)如圖2 所示。一般SerDes 都是易失性的,且不具備存儲能力,因此不同的參數(shù)配置就要對應(yīng)不同的配置碼,所以當(dāng)SerDes 參數(shù)較多時,配置碼的數(shù)量也會很多。
圖2 SerDes 中的JTAG 邊界掃描結(jié)構(gòu)
2.2.2 BIST 內(nèi)建自測試
內(nèi)建自測試的原理是將測試置于待測芯片內(nèi)部,在內(nèi)部完成測試數(shù)據(jù)的輸入和測試結(jié)果的輸出,以及結(jié)果正確與否的判斷。圖3 為SerDes 中的內(nèi)建自測試原理圖[7],對于獨立SerDes 芯片來說BIST 可以在SerDes 內(nèi)部,如2.1 節(jié)中的典型高速SerDes 電路中的PRBS[8]產(chǎn)生模塊以及PRBS 檢測模塊,有了這兩個模塊就可以進(jìn)行數(shù)據(jù)環(huán)回測試,并在內(nèi)部進(jìn)行簡單的判斷。對于作為IP 核的SerDes 來說,例如集成在FPGA內(nèi),BIST 可以通過收發(fā)器之外的其他邏輯資源建立,產(chǎn)生數(shù)據(jù)輸入并對數(shù)據(jù)輸出進(jìn)行檢測,從而達(dá)到自測試的目的。一般BIST 只能進(jìn)行內(nèi)部功能測試,對于外部激勵和壓力無法進(jìn)行測試,同時所需測試向量也很多。
圖3 SerDes 中的內(nèi)建自測試原理
IBERT 集成式誤碼率分析器是Xilinx 推出的用于調(diào)試其FPGA 產(chǎn)品集成高速SerDes 模塊的IP 工具,其用戶界面及實現(xiàn)原理如圖4 所示。
圖4 IBERT 用戶界面及實現(xiàn)原理
IBERT 使用 Xilinx 專用調(diào)試軟件 ChipScope 對SerDes 進(jìn)行配置,通過JTAG 和集成邏輯分析核ILA以及集成控制核ICON 對SerDes 進(jìn)行動態(tài)控制,表現(xiàn)在用戶界面上即 MGT/BERT 設(shè)置、DRP 設(shè)置、Port 設(shè)置、RX 邊際分析 4 個部分[9],可以對 SerDes 大部分參數(shù)進(jìn)行查看和設(shè)置,從而達(dá)到硬件調(diào)試的目的。但對于未集成ILA 和ICON 甚至動態(tài)可重構(gòu)端口(DRP)模塊的SerDes 來說,IBERT 就成了一種有諸多限制的調(diào)試高速SerDes 的途徑,適用范圍較窄。
本文提出了一種基于串口的高效調(diào)試方案,其原理如圖5 所示。1)將SerDes 的主要參數(shù)分成兩部分,一部分與DRP 模塊建立映射關(guān)系,一部分從SerDes的端口(PORT)進(jìn)行配置;2)將DRP 和端口分別與串口建立協(xié)議關(guān)系,分為讀寫兩種指令和地址,然后生成帶BIST 的配置程序;3)上位機(jī)通過JTAG 將配置程序下載到SerDes 中,SerDes 開始在初始默認(rèn)模式和參數(shù)下工作,然后通過外部儀器為SerDes 提供參考時鐘并進(jìn)行功能、性能檢測如眼圖測試等;4) 根據(jù)SerDes 的實時情況和調(diào)試需要,在不中斷SerDes 和BIST 工作的情況下,通過串口對SerDes 進(jìn)行動態(tài)讀寫配置,調(diào)整其參數(shù)。
圖5 本文提出的調(diào)試方案原理
因為本項目SerDes 為FPGA 內(nèi)部IP,所以本文以此類SerDes 為例,但調(diào)試方案適用于各類SerDes,包括不帶DRP 功能的SerDes,本項目設(shè)計的SerDes 集成了動態(tài)重配置模塊,這樣可以減少串口協(xié)議的復(fù)雜度,減少地址深度。對于沒有DRP 的SerDes,所有參數(shù)都從端口與串口協(xié)議地址進(jìn)行映射,同樣可以實現(xiàn)動態(tài)配置,實現(xiàn)高效調(diào)試。
本文提出的SerDes 高效調(diào)試方案基于串口實現(xiàn),因此需要進(jìn)行相應(yīng)的串口協(xié)議與指令的設(shè)計。圖6 是本文提出方案的串口協(xié)議架構(gòu),主要由頂層控制模塊、串口收發(fā)端口定義模塊、DRP 讀寫和Port 讀寫模塊構(gòu)成,圖中還列舉了部分典型SerDes 參數(shù)與地址的映射關(guān)系,以及占用的位寬。
表2 列出了本文提出方案設(shè)計的串口指令,主要包括 DRP 讀寫指令、DRP 地址、Port 讀寫指令、Port 地址,以及所有操作的狀態(tài)指令。
圖6 本文提出方案的串口協(xié)議架構(gòu)
DRP 相關(guān)指令:DRP 地址位寬設(shè)置為8 bit,主要使用地址0x02~0xAD,因此串口傳輸DRP 地址時只傳輸8 bit 的地址位;當(dāng)串口狀態(tài)在DRP 讀寫時,如果接收串口傳遞的地址不在0x02~0xAD 范圍內(nèi),會被判斷為無效地址,此時若處于寫狀態(tài),后續(xù)接收的DRP數(shù)據(jù)會被忽略,若處于讀狀態(tài),將不會接收到DRP 數(shù)據(jù),F(xiàn)PGA 將通過串口返回值0x53 標(biāo)識指令錯誤;當(dāng)接收到的地址有效時,若在讀狀態(tài)則先后返回地址內(nèi)DRP 值的高 8 位和低 8 位,若在寫狀態(tài),F(xiàn)PGA 接收完成DRP 值,并等待DRP 寫入完成后,將返回值0x52標(biāo)識寫操作完成。
表2 本文提出方案設(shè)計的串口指令
PORT 相關(guān)指令:對于端口參數(shù),將需要調(diào)試的SerDes 的Port 參數(shù)從0x00 以遞增順序進(jìn)行編號,并在程序內(nèi)規(guī)定最大值;在PORT 參數(shù)操作時,若接收到的PT_ADDR 值不在定義的最大值范圍內(nèi)將直接返回值0xA3,標(biāo)識錯誤;反之,當(dāng)寫操作時,在完成參數(shù)數(shù)據(jù)變化后將返回0xA2 標(biāo)識寫操作完成,或處于讀操作時返回當(dāng)前參數(shù)數(shù)值。
Steps 狀態(tài)指令:主要分為5 個Steps,所有的讀寫操作必須以Step1 中制定的數(shù)值作為起始,當(dāng)不處于任意操作狀態(tài)中時,除這4 條指令外的任意數(shù)據(jù)將被忽略。
對基于本項目研發(fā)的集成13.1 Gbit/s 高速SerDes核的FPGA 進(jìn)行驗證,SerDes 結(jié)構(gòu)與第2 節(jié)給出的結(jié)構(gòu)基本一致,不包含ILA 和ICON 模塊,且FPGA 資源有限,無法使用IBERT。使用本文提出的基于串口的調(diào)試方案進(jìn)行試驗驗證,測試環(huán)境如圖7 所示。
串口模塊使用RS232 模塊?;诒疚姆桨搁_發(fā)的串口程序可以動態(tài)調(diào)整的參數(shù)主要包括:LOOPBACK、TX 預(yù)加重和去加重參數(shù)、TX 擺幅、均衡參數(shù)、RXTX 阻抗匹配參數(shù)等,覆蓋了2.1 節(jié)表1 中的所有參數(shù)。在用示波器和誤碼儀監(jiān)測TX 眼圖等參數(shù)的同時可以進(jìn)行動態(tài)調(diào)節(jié)。例如初始條件下TX 眼圖反射較大,通過串口動態(tài)調(diào)試SerDes 的參數(shù),快速定位出是因阻抗不匹配導(dǎo)致,并快速調(diào)節(jié)至最佳值(阻抗等級有 16 級可調(diào))。 調(diào)節(jié)阻抗匹配參數(shù)TERM_RCAL_CFG 和 TERM_RCAL_OVRD 前 后 的眼圖對比如圖8 所示。
圖7 本文使用的高速SerDes 測試環(huán)境
最后對比不同方案的SerDes 測試能力,包括可測參數(shù)、是否需要外部儀器、適用范圍以及所需測試向量的數(shù)量,如表3 所示。
表3 中內(nèi)部功能參數(shù)主要指近端環(huán)回、不同數(shù)據(jù)位寬、不同線速率等功能,多是PCS 的功能和性能參數(shù);接收和發(fā)送所有參數(shù)是指除內(nèi)部功能參數(shù)之外,還包括TX 發(fā)送端眼圖、抖動、接收端抖動容限、均衡、遠(yuǎn)端環(huán)回等PMA 和PCS 的功能和性能參數(shù)。需要測試向量數(shù)是根據(jù)表1 所列的常用參數(shù)計算,要覆蓋這些參數(shù)所需的測試向量數(shù)。從結(jié)果可以看出,本文提出方案大大減少了所需測試向量數(shù),相比傳統(tǒng)JTAG和BIST 方法大大提高了調(diào)試效率,且比IBERT 適用SerDes 范圍大得多,具有普適性。
圖8 阻抗匹配參數(shù)調(diào)節(jié)前后的眼圖對比
表3 不同方案SerDes 測試情況對比
本文提出的基于串口的SerDes 調(diào)試方案,在傳統(tǒng)JTAG 和BIST 方法的基礎(chǔ)上設(shè)計了串口協(xié)議,建立了上位機(jī)與SerDes 參數(shù)和控制位的映射關(guān)系,最終用很少的測試向量實現(xiàn)了所有參數(shù)的配置和動態(tài)調(diào)試,在繼承JTAG 和BIST 優(yōu)點的同時,大大提高了SerDes調(diào)試效率,并具有通用性,方便各類SerDes 的應(yīng)用和測試。