隨著需求的多樣化,FPGA的功能也進一步的增強。其中,高速收發器從本來是只有高端FPGA才有的模塊,已經變為相對普及的甚至必備的功能模塊。而10G的線速率也從多年前的少數FPGA支持,變為目前的主流線速率。
由于FPGA的最大特點就是靈活,所以FPGA的高速收發器也擁有非常繁瑣的配置選項,目的就是為了靈活地支持各種傳輸協議。之所以稱之為繁瑣,就是靈活性帶來的弊端,即想要理清楚諸多的功能,就需要非常多時間在高速收發器上。
不過對于大部分的用戶來說,需要使用高速收發器的接口通常是相對固定的,這樣功能也就相對固定。這樣就沒有必要理解高速收發器全部的功能,只要理解需要使用的配置含義即可。這樣可以快速進行嘗試/測試,在嘗試/測試過程中結合文檔進行深入理解。這樣比強行讀完文檔再動手實踐,學習效果上有可能更好。所以Xilinx的高速收發器中默認就帶了一些常用接口的配置,便于用戶的學習/使用。
Xilinx 7系列FPGA芯片配置四種高速收發器,按照支持的最高線速率從低到高排列分別是GTP,GTX,GTH,GTZ。
GTP由于結構問題,使用起來靈活性較差,同時支持的最高線速率也只有6.x個G。GTZ屬于7系列中最高端的高速收發器,集成GTZ的FPGA很少,同時也是用了多die技術,物理上和FPGA主體是兩個部分。對這兩種GT,本文不做更多的介紹。
與GTX相比,GTH整體結構幾乎一樣,只是在個別細節有更多的配置或者更強大的性能。考慮到文檔都是同一篇文檔,所以本文以GTX為例。本文所有內容,除非特別注明,都同時適用于GTX和GTH。
對于高速收發器GTX來說,雖然可以通過IP中的默認配置來進行初步的學習,而且有一定基礎之后,可以手動配置GTX參數。但是如果不充分理解GTX的各個功能,最常見的被卡住的地方,就是不能/不知道如何進行正確的問題定位。所以文本的主題就是介紹一些常用的調試手段和步驟,便于使用者初步定位問題。即使無法定位,將這些調試工作詳細記錄并提交給FAE,也會有很大的幫助。
這里需要說明,GTX的問題通常都不簡單,調試工作更是繁瑣。而且很可能無功而返,最終還是要請FAE/技術支持來幫忙解決。但是這不代表可以將所有的工作都推給FAE/技術支持。進行一些初步的調試,并將結果反饋給FAE/技術支持,可以讓專家更快的理解問題的現象并給出進一步的建議,而無需從最基礎的工作開始一步一步檢查。
第一步,在配置好的GTX的IP基礎上,生成GTX的example design,并做仿真。
首先,Vivado工具的一個優點就是幾乎所有IP都會提供一個基于IP配置的example design,對于GTX這樣復雜的IP,這個example design是一個完成的工程,提供了多種用途,是一個非常好用的學習/調試工具。第一步先使用這個工程進行仿真,這樣便于理解GTX的具體操作,并與實際結果做對比。
這里強調一下,并不是針對GTX的,對于任何FPGA的設計,都推薦盡量進行充分的仿真。
第二步,直接使用GTX的example design作為工程,抓一下rx fsm reset done和rx status狀態機。如果有條件,可以使用8b10b在真實環境中進行測試。
說明一下8b10b的作用。8b10b在這里的作用是用于查看是否有8b10b的錯誤,如果出現8b10b的錯誤則表明有很高的概率是硬件有問題,可以重點查看PCB走線質量、時鐘/電源等地方。如果沒有使用8b10b的環境(連測試環境都無法使用8b10b),那么問題會棘手一些。
rx fsm reset done是接收端任務完成的標記,通常這個信號拉高表示接收端沒有問題,通常就代表GTX可以正常工作。如果無法穩定拉高,則查看rx status的變化,看看是哪一步(或者哪幾步)導致無法拉高rx fsm reset done。
至于這兩個信號的出處。example design中提供了一個復位狀態機。默認是不包含在IP Core中,放在example design中。最終的設計,建議使用example design作為一個整體,而不是只使用IP Core。
第三步,使用ibert工具測試一下誤碼率,并查看一下眼圖。
如果example design能夠正常工作了,那么除非GTX IP設置有問題,通常來說,GTX最基本的應用是沒問題的,很大可能是GT的上層控制有問題。如果example design測試有問題,rx fsm reset done信號無法拉高,并有8b10b錯誤,下一步用ibert檢查一下硬件電路是必要的。
在對端可以發送prbs的條件下(比如對端FPGA上運行的也是ibert),ibert可以測試誤碼率。通過誤碼率來查看一下鏈路質量是否有問題。
無論誤碼率測試是否可以進行,ibert都可以對接收端進行眼圖的掃描。通過查看眼圖的大小,可以初步判斷鏈路的質量。
ibert是Xilinx針對FPGA的高速收發器提供的測試工具。通常在PCB完成之后就可以先用ibert對高速收發器的鏈路質量進行測試。另外,如果需要進行高低溫測試,直接使用ibert也是一個不錯的選擇。
第四步,有條件的情況下進行外部環回測試。
FPGA使用高速收發器的時候,一個常見的場景就是使用外部線纜,比如光模塊/光纖,或者同軸電纜等。這個時候是條件進行外部環回測試的。將example design進行外部環回測試,及同一個GTX的TX發出信號通過外部線纜返回到自己的RX端。如果這個測試結果是穩定的,表明GTX是可以正常工作的。
另外還有很多情況是無法進行外部環回測試的,比如收發器走線是固定在PCB上的,例如PCIE。這種情況下,如果是兩個Xilinx的FPGA對接,可以考慮利用FPGA內部的遠端環回進行測試。具體原理是待測GTX的TX發送數據,送往輔助的FPGA的GTX,輔助GTX從RX收到數據后直接送給TX發送出去,待測GTX的RX端接收到輔助GTX TX端發來的數據,完成環回。相當于利用輔助GTX來實現一個外部環回。需要注意的是,遠端環回的使用是由條件限制的,具體請參考7系列GTX/GTH的手冊UG476。
外部環回測試,如果example design的結果不理想,可以用ibert再進行一次測試,有條件的情況下誤碼率和眼圖都查看一下。可以作為對比分析的數據。
第五步,在有條件的情況下,使用高速示波器,查看FPGA GTX RX接收端PIN上的眼圖。
這一步的條件限制最大。高速示波器的價格昂貴,而且使用復雜。同時由于FPGA多為BGA封裝,GTX的RX PIN很可能無法使用示波器探頭進行測試。所以很多用戶是沒有辦法進行這一步的測試的。
至于GT內部的2D eye scan眼圖的使用,理論上是可以用來幫助調試的。但是實際上,當用戶會使用2D eye scan的時候,通常也就不需要本文的一個初步調試的建議。所以本文針對的是初級用戶,相對高級/復雜的2D eye scan在這里不做介紹。
下面更進一步分析一下第二到第五步的具體作用。
第二步的rx fsm reset done信號可以作為GTX正常工作的指示信號。如果example design在最終的使用/測試場景中可以穩定工作,該信號穩定為高,可以表示設計幾乎沒有問題。如果用戶自己的設計出現問題,大概率是GTX代碼集成時的問題,比如沒有正確使用example design,或者,問題不來自GTX模塊。另外,如果配置有不合適的地方,可以參考仿真,并參考第四步的測試。
這里要注意一下,example design中用自帶數據源和接收數據進行比較驗證,來判斷數據是否正確。如果用戶使用自己的數據源,可能會導致數據驗證模塊一直輸出出錯,從而導致rx復位狀態機持續被復位。
這個問題可以通過查看rx status來判斷。另外其他的可能性也都會反映在rx status信號的變化中。所以rx status是個很重要的調試信號。
至于8b10b,最大的優勢就是自帶錯誤檢查。如果出現8b10b的錯誤,則很大概率是鏈路有問題。
在第二步的基礎上用ibert進行測試,原因是除了可以測試誤碼率和眼圖之外(其實這兩個功能自己設計邏輯也可以實現),ibert將GTX的所有參數都拉了出來,可以進行任意的配置。如果第一步的發現是懷疑硬件鏈路有問題,利用ibert檢查一下鏈路是個不錯的方法,并且可以通過調整部分GTX的參數來嘗試降低誤碼率,擴大眼圖。另外,眼圖的大小也是有參考意義的。
這里需要注意一下,ibert和GTX example design是完全不一樣的設計。ibert只是為了便于測試,GTX的很多參數值與實際使用中的值不一樣。所以相比ibert,GTX example design更接近最后實現的結果。
當說到大概率是硬件鏈路的問題時候,這個結論對調試可能沒什么幫助。所以這個時候需要進行環回測試。如果可以進行外部環回測試,發現環回測試正常,那么可能是某一端的端接部分有問題,或者兩邊GTX參考時鐘頻偏比較大。如果外部環回測試無法正常通過檢查,那么可以打開GTX的近端PMA環回進行測試(不要用近端PCS環回進行測試)。如果近端PMA環回測試正常,可以認為是外部鏈路質量有問題(比如光模塊/光纖有問題),如果近端PMA環回測試不正常,大概率是時鐘/電源有問題。
環回測試可以做兩次,一次用GTX example design,一次用ibert,來對比結果。類似光纖有問題這樣的原因兩次測試都能得出一樣的結果。如果結果符合預期,那么就離真正的問題原因更進一步了。
眼圖的測量是判斷鏈路質量的最終依據。通過使用外部示波器和ibert來測量眼圖,具體數據可以交給FAE,可以得知是否符合GTX的要求(原廠應該有相關數據,但是似乎沒有開放給普通用戶查看)。
示波器和ibert測試的眼圖,是不一樣的。通常用示波器,測量FPGA GTX RX pin腳出的眼圖,稱之為遠端眼圖。用ibert測量出來的原圖,稱之為近端眼圖。
遠近端眼圖是按信號是否經過RX PMA來區分的。遠端眼圖是沒有經過RX PMA的信號,近端眼圖是通過RX PMA的信號。
出自UG476
RX PMA的對接收到的信號有一定的處理功能(上圖中RX EQ、DFE)。處理后的信號質量會變好。所以通常經過RX PMA的信號會比Pin腳處更好,導致近端眼圖好于遠端眼圖。
具體的調試步驟,雖然總結成5個步驟,但是如果不熟悉,實現起來還是很麻煩的。不過由于GTX的問題通常都比較難以定位,所以這些測試一方面有很多參考價值,另一方面也加強了對GTX的理解。在研發過程中,提前進行相關的測試,可以排查很多問題,便于項目的按計劃進行。
評論
查看更多