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