一,前言
在FPGA - Xilinx系列高速收發器---GTX中詳細介紹了GTX的基礎知識,以及IP核的調用,下面將補充一下GTX在使用中的高速串行數據流在接收和發送時的控制與對齊(K碼),以及高速接口GTX,如果GTX建鏈建不起來,Vivado自帶的調試工具誤碼率測試(Integrated Bit Error Ratio Tester,IBERT)核的使用。
二,Comma碼(K碼)
????????高速串行數據流在接收端需要重新串并轉換成多個字節的并行數據,如何有效的識別32bit數據邊界?這就需要一個特殊的序列,即為Comma碼(K碼)。在任意數據組合中,Comma碼只作為控制字符出現,在數據負荷部分不會出現,所以使用comma碼字符只是幀的開始和結束標志,或者修正和數據流對齊的控制字符。
????????K碼是一個集合,D碼用來傳數據字符,K碼用來傳控制字符,所有和數據本身無關的通道控制功能都是由K碼來完成的。
????????常見的 K 碼為 K28.5,換成十六進制就是 0xBC。
????????使用 GT 收發器時,K碼主要起到兩個作用:??①K碼對齊(comma alignment)? ②)幀對齊(word alignment)
????????K碼對齊(comma alignment)
????????定義:接收端通過K碼,將連續1bit 的數據串行數據分割成有效的字節數據,也就是將有效數據從連續的 0、1中間恢復出來。K 碼對齊是 GT IP 核自動完成的。
? ? ? ? 看下面例子(aabbcc可以看作為幀頭,bc為K碼)
????????? ? ?
? ? ? ? 但是在實際傳輸中可能出現了字節偏移,如下圖:
? ? ? ?? ? ??
? ? ? ? 對于用戶端就得設計幀對齊,即通過判斷charisk的值,來判斷是否發生了字節偏移 ,如果發生了偏移 就進行移位操作,如下圖:?
? ? ? ? ? ? ? ? ? ? ? ?
三,IBERT核
1,概述
????????IBERT(集成誤碼率測試儀)是xilinx為7系列FPGA?GTX收發器設計的,用于評估和監控GTX收發器。IBERT包括在FPGA邏輯中實現的模式生成器和檢查器,以及對端口的訪問和GTX收發器的動態重新配置端口屬性,還包括通信邏輯,以允許設計在運行時通過JTAG進行訪問。
????????IBERT工具用于對Xilinx?FPGA芯片的高速串行收發器進行板級硬件測試。通過IBERT可以獲取誤碼率,觀察眼圖,調節串行收發器的參數,從而有助于判斷可能存在的問題,便于驗證硬件的穩定性和信號完整性。
2,測試原理
????????IBERT中的BERT是Bit Error Ratio Test的縮寫,指比特出錯概率測試,簡而言之就是誤碼率測試。Vivado中IBERT工具的測試原理是通過收發器由外部回環進行自收自發而實現。就是將同一組收發器的TX和RX進行短接,TX發送端通過發送某種特定序列的數據流,在RX接收端接收后,通過比對發送和接收的數據,從而得出接收端誤碼的統計值。
????????GTX接收和發送方向均由PMA和PCS兩部分組成,PCS提供豐富的物理編碼層特性,如8b10b編碼、時鐘校準等功能,PMA部分為模擬電路,提供高性能的串行接口特性,如預加重、均衡等功能。GTX同時還提供動態配置接口,用于動態的修改GTX的配置。
?????????IBERT 工具的環回模式有:
????????近端PCS環回測試(路徑①),數據流僅通過近端GTX的PCS部分,可用于驗證近端GTX中PCS收發雙向的設置;
????????近端PMA環回測試(路徑②),數據流通過近端GTX的PCS、PMA,可用于驗證近端GTX收發雙向的設置;
????????遠端PMA環回測試(路徑③),數據流通過近端GTX的PCS和PMA,遠端的GTX的PMA部分,通過兩個GTX之間的物理連線,驗證兩個GTX之間物理聯系的可靠性,以及驗證兩個GTX的PMA部分設置的正確性;
????????遠端PCS環回測試(路徑④)驗證近端收發器和遠端收發器的通信狀況;以及None無環回模式即通過外部連接發送和接收。
????????遠端PCS或PMA環回測試時板卡下載IBERT核生成的bit文件,通過兩個通道上的Tx和Rx接口互相連接,其中一個通道上的模式設置為Far_End_PMA或Far_End_PCS模式,另一個通道設置為默認的None模式并監測誤碼率。
????????Vivado中IBERT默認模式為None模式,收發器通過外部連線由外部環回進行自收自發而實現。可將同一組收發器的TX和RX進行短接,在RX接收端接收TX發送的數據后,通過比對發送和接收的數據,從而得出接收端誤碼的統計值。
3,IP核配置
(1)創建工程
打開vivado,新建工程后從IP Catalog找到IBERT并雙擊打開;
(2)第一頁配置
IBERT測試協議選擇Custom1,GTX參考時鐘選擇頻率為125MHz,在配置的過程中,Refclk可選的頻率是由LineRate決定,由于在板卡上Refclk已固定為125MHz,因此測試所選擇的線速應支持125MHz的參考時鐘。
(3)?第二頁配置
(4)?第三頁配置?
(5)第四頁總結??
(6)打開例程
創建完成后打開官方例程
(7)生成比特流-燒錄
(8)測試
在Serial I/O Links窗口創建連接,將同1個GTX中同一個通道的TX和RX建立link。(也可以選擇auto-detectlinks)
進行近端環回
?選擇????????MGT_X0Y0/TX? ?????????MGT_X0Y0/RX
????????????????MGT_X0Y1/TX? ? ? ?????MGT_X0Y1/RX
在serial I/O link最右端的loopback mode選擇近端PCS(或PMA)環回模式,在改變模式時可能會出現誤碼,需要點擊reset重新監測。
然后創建眼圖:
可以看到藍色表示正常,紅色表示誤碼
遠端環回
改變環回模式后記得復位一下
創建眼圖
四、總結
????????通過環回和開環方式進行誤碼率測試,可以識別問題并測定板卡的實際支持速率。IBERT能夠在運行時配置高速串行收發通道的各項參數,提供多種環回模式和測試激勵源,并通過自動掃描測試確定收發的最佳參數。這能夠滿足硬件測試中對高速串行收發通道信號測試的大部分需求,也適用于故障定位等場合。