PCIe標準自從推出以來,1代和2代標準已經在PC和Server上逐漸普及,用于滿足高速顯卡、高速存儲設備對于高速數據傳輸的要求。出于支持更高總線數據吞吐率的目的,PCI-SIG組織在2010年制定了PCIe 3.0,即PCIe 3代的規范,數據速率達到8Gbps。
PCIe3.0總線究竟有什么特點?對于其測試有什么特殊的地方呢?本文我們就來探討一下。
1PCI-E 3.0簡介
制定PCI-e 3代規范的目的主要是要在現有的廉價的FR4板材和接插件的基礎上提供比PCI-e 2代高一倍的有效數據傳輸速率,同時保持和原有1代、2代設備的兼容。別看這是個簡單的目的,但實現起來可不容易。
如何將數據傳輸速率提高一倍?
PCI-E 2代在每對差分線上的數據傳輸速率是5Gbps,相對于1代數據速率的兩倍;而PCI-E 3代要相對于2代把速率也提高一倍,理所當然的是把數據傳輸速率提高到10Gbps。
但是就是這個10Gbps帶來了很大的問題,因為PC和Server上出于成本的考慮,普遍使用便宜的FR4的PCB板材以及廉價的接插件,如果不更換板材和接插件,很難保證10Gbps的信號還能在原來的信號路徑上可靠地傳輸很遠的距離(典型距離是15~30cm)。因此PCI-SIG最終決定把PCI-E 3代的數據傳輸速率定在8Gbps。但是8Gbps相比2代的5Gbps并沒有高一倍,所以PCI-E協會決定在3代標準中把在1代和2代中使用的8b/10b編碼去掉。
在PCI-E 1代和2代中,為了保證數據的傳輸密度、直流平衡以及內嵌時鐘的目的,會把8bit數據編碼成10bit數據傳輸。因此,5Gbps的實際有效數據傳輸速率是5Gbps×8b/10b=4Gbps。這樣,在PCI-E 3代中,如果不使用8b/10b編碼,其有效數據傳輸速率就能比 2代的4Gbps提高1倍。
如何保證數據傳輸密度和直流平衡?
但是這樣問題又來了,數據如果不經編碼傳輸,很難保證數據傳輸密度和直流平衡,接收端的時鐘恢復電路也很容易失鎖。為了解決這個問題,PCI-E 3代里面采用了擾碼的方法,即數據傳輸前,先和一個多項式進行異或,這樣傳輸鏈路上的數據就看起來就比較有隨機性,到了接收端再用相同的多項式把數據恢復出來。
通過上述方法,PCI-E 3代就可以用8Gbps的傳輸速率實現比2代的5Gbps高1倍的數據傳輸速率。實際應用中,PCI-E 3代的總線上也仍然有數據編碼,不過采用的是128b/130b的編碼,編碼效率很高,由此損失的總線有效帶寬比8b/10b編碼小多了。
2PCI-E 3.0 發送及接收端的變化
但是問題遠沒有結束,即使數據速率只有8Gbps,要在原有的廉價PCB和接插件上實現可靠傳輸也還要解決一些新的問題。其中最大的問題是信號的損耗,FR4板材對信號高頻成分有很大衰減,而信號速率越高,其高頻成分越多,所以衰減也就更厲害。圖1是不同速率的信號經過10英寸的FR4板材的PCB傳輸以后信號的眼圖,我們可以看到,8Gbps的信號在接收端基本上看不到眼圖了,更不要說進行有效的數據接收。
▲圖1 不同速率信號經過10英寸的FR4板材的PCB傳輸以后信號的眼圖
發送端的變化
為了解決這個問題,在PCI-E的1代和2代中使用了去加重(De-emphasis)技術,即信號的發射端(TX)在發送信號時對跳變bit(代表信號中的高頻成分)加大幅度發送,這樣可以部分補償一下傳輸線路對高頻成分的衰減,從而得到比較好的眼圖。PCI-E 1代中采用了-3.5db的去加重,PCI-E 2代中采用了-3.5db和-6db的去加重。而對于3代來說,由于信號速率更高,需要采用更加復雜的去加重技術,因此除了跳變bit比非跳變bit幅度增大發送以外,在跳變bit的前1個bit也要增大幅度發送,這個增大的幅度通常叫做Preshoot。圖2是PCI-E 3代中采用的預加重技術對波形的影響的例子(參考資料:PCI Express Base Specification 3.0 )。
▲圖2PCI-e 3.0 預加重技術對信號波形的影響
為了應對復雜的鏈路環境,PCI-E3代中規定了共11種不同的Preshoot和De-emphasis的組合,每種組合叫做一個Preset,實際應用中Tx和Rx端可以在Link Training階段根據接收端收到的信號質量協商出一個最優的Preset值。下圖是11種Preset的組合(參考資料:PCI Express Base Specification 3.0)。比如P4代表沒有任何預加重,P7代表最厲害的預加重。
接收端的變化
那做了這些工作就夠了嗎?經過實驗發現,僅僅在發送端對信號高頻進行補償還是不夠,于是PCI-E 3代標準中又規定在接收端(RX端)還要對信號做均衡(Equalization),從而對線路的損耗進行進一步的補償。均衡電路的實現難度較大,以前主要用在通信設備的背板或長電纜傳輸的場合,現在也逐漸開始在計算機領域應用,比如USB3.0中和SATA 6G中也采用了均衡技術。下圖是PCI-E 3.0里對均衡器的頻響特性的要求。我們可以看到均衡器的強弱也有很多檔可選,在Link Training階段TX和RX端會協商出一個最佳的組合(參考資料:PCI Express Base Specification 3.0)。
經過各種信號處理技術的結合以及大量的實驗,PCI-E 3.0總算初步實現了在現有的FR4板材和接插件的基礎上提供比PCI-E 2代高一倍的有效數據傳輸速率。但我們同時也看到,PCI-E 3代的芯片會變得更加復雜,系統設計的難度也也更大。如何保證PCI-E 3代總線工作的可靠性和很好的兼容性,就成為設計和測試人員面臨的嚴峻挑戰。
3PCI-E 3.0 發送端信號質量測試
對于發送端的測試,主要是用寬帶示波器捕獲其發出的信號并驗證其信號質量滿足規范要求。按照目前規范中的要求,PCI-E 3.0的一致性測試需要至少13GHz帶寬的示波器,并配合上相應的測試夾具和測試軟件。之所以PCI-E 3.0測試需要的示波器帶寬相對于PCI-E 2.0來說變化不大,是因為信號的上升時間基本沒變,不過如果是出于調試的目的,一般建議最好使用16GHz或以上帶寬的示波器進行測試。
由于PCI-E 3代的信號經過傳輸以后信號幅度都已經衰減得很小(典型值是100mV左右),為了保證足夠的測量精度,除了示波器的帶寬要足夠以外,還需要示波器有很低的底噪聲才能保證測量的準確性和測量重復性。比如Keysight公司的高端的V或者Z系列示波器都可以用于PCI-E 3.0這樣的高速信號的測試中。以V系列示波器來說,其帶寬選擇可從8GHz~33GHz,最高采樣率80G/s,具有業內最低的底噪聲和本底抖動。同時V系列示波器還可以選配高達20G/s的數字通道用于DDR3/4等總線的調試,或者選配高達160bit長度、12.5Gbps數據速率的硬件串行觸發及誤碼檢測功能,這是市面上唯一能對PCIE3.0 的128b/130b編碼數據進行硬件觸發和調試的示波器。
▲圖3 PCI-E 3.0 發送端信號質量測試方法
在PCIE3.0的測試中,首先使用PCI-E協會提供的PCI-E 3代的夾具把被測信號引出(PCI-E3代的夾具和PCI-E 2代一樣分為CBB板和CLB板,CBB板用于插卡的測試,CLB板用于主板的測試),然后通過測試夾具上的切換開關控制DUT輸出PCI-E 3代的一致性測試碼型。在切換板上的按鍵開關時,正常的PCI-E 3代的被測件依次會輸出2.5Gbps、5Gbps -3dB、5Gbps -6dB、8Gbps P0、8Gbps P1、8Gbps P2、8Gbps P3、8Gbps P4、8Gbps P5、8Gbps P6、8Gbps P7、8Gbps P8、8Gbps P9、8Gbps P10的碼型。需要注意的一點是,由于PCI-E 3代信號如前所述共有11種Preset值,測試過程中應明確當前測試的是哪一種Preset值,做信號質量測試常用的有Preset7、Preset8、Preset1、Preset0等。下圖是PCI-E 3代的CBB板及一致性測試碼型。
另外,由于PCI-E 3代的標準里,在接收芯片側使用了信號均衡技術,而且均衡器對于最終信號質量做了改善調整。為了把傳輸通道對信號的惡化以及均衡器對信號的改善效果都考慮進去,PCI-E 3代的測試里很重要的一點是其發送端眼圖、抖動等測試的參考點是在接收端。也就是說,即使我們是在發送端進行測試,在進行眼圖、抖動等測試時也不是直接測試發送端的波形,而是需要把傳輸通道對信號的惡化的影響以及均衡器對信號的改善影響都考慮進去。圖4比較直觀地顯示出了在不同位置信號質量的情況。
▲圖4 PCI-e 3.0信號在傳輸過程中的信號質量的變化
為了模擬出傳輸通道和芯片封裝對信號的影響,測試中需要做傳輸通道參數的嵌入操作,即Embed。這個傳輸通道的模型是PCI-E協會以S參數文件的形式提供的,測試過程中需要示波器能把這個S參數文件的影響加到被測波形上。同時,測試過程中示波器是用兩個通道分別連接信號的正負端,要得到最后的差分波形需要示波器對兩個通道的波形做相減運算。如果波形相減和S參數嵌入的工作都由示波器軟件計算,會大大影響測試速度,因此有些公司的高端示波器內部會有硬件的通道相減及S參數運算功能,可以大大提高測試的速度和效率。
對測試數據做分析的方法有2種:一種是使用PCI-SIG提供的Sigtest軟件做手動分析;一種是使用示波器廠商提供的自動測試軟件。
Sigtest軟件算法由PCI-SIG免費提供,可以進行信號的眼圖、模板、抖動的測試,但是需要用戶手動捕獲數據進行后分析,不熟練的測試人員, 經常由于設置不對造成測試結果不一致,而且其測試項目有限,沒有覆蓋全部的信號要求。所以針對PCI-E3.0的測試有些示波器廠商還提供了相應的自動化測試軟件,比如Keysight公司的N5393D自動化測試軟件。這個軟件以圖形化的界面指導用戶完成設置、連接和測試過程,除了可以自動進行示波器測量參數設置以及自動生成報告外,還提供了Swing、Preset、Common Mode等更多測試項目以,提高了測試的效率和可重復性。除此以外,這個軟件在測試過程中還會對被測件發出的碼型和速率進行檢查,以確認測試使用的是規范要求的正確碼型。另外,很重要的一點是,在N5393D軟件里,使用的是和SigTest軟件完全一樣的分析算法,從而可以保證分析結果和SigTest軟件的一致性。圖5是N5393D軟件的設置界面。
▲圖5 N5393D軟件的設置界面
因此,簡單來說,對于以前從事PCI-E 2.0的測試人員來說,進行PCI-E 3.0的測試除了需要重新購置PCI-E3.0的測試夾具CLB3和CBB3以外(其實原有的CLB2和CBB2等針對PCI-E2.0測試的夾具勉強也仍然可以用于PCI-E3.0的發送信號測試中),PCI-E3.0的信號測試相對于PCI-E2.0來說硬件設備的變化不大,基本使用13GHz或16GHz帶寬的示波器就可以,但是測試軟件對于測試數據的處理變得更加復雜了。數據分析時除了要嵌入傳輸通道和芯片封裝的線路模型以外,還要把均衡器對信號的改善也考慮進去,好在無論是PCI-E協會提供的免費的Sigtest軟件還是Keysight公司的N5393D自動測試軟件都可以為PCI-E3.0的測試提供很好的幫助。
此外,由于PCI-E總線上要測試的數據Lane的數量很多,雖然測試項目可以由軟件自動完成,但是連接還是需要人工進行,因此每測試完一對差分線就需要測試人員來更改一下連接,非常麻煩。為了提高測試效率,可以把示波器配合相應的微波開關矩陣使用,微波開關矩陣可以在自動測試軟件的控制下根據需要進行信號的切換。這樣測試人員只需要一次把所有的被測信號都連接到開關矩陣上,然后運行測試軟件就可以了。圖6是在PCI-E的測試中配合開關矩陣使用的情況。
▲圖6 PCI-E測試中配合開關矩陣使用
4PCI-E 3.0 接收端容限測試
在PCI-E 1.0和2.0的時代,接收端測試不是必須的,通常只要保證發送端的信號質量基本就能保證系統的正常工作。但是對于PCI-E3.0來說,由于速率更高,發送端發出的信號經過長線傳輸后信號質量總是不會太好,所以接收端使用了復雜的均衡技術來提升接收端的接收能力。由于接收端更加復雜而且其均衡的有效性會顯著影響鏈路傳輸的可靠性,因此在PCI-E3.0時代,接收端的測試變成了必測的項目。
Keysight的M8020A是高性能的串行誤碼儀,其單路可以產生16.2Gbps的高速數據流,固有抖動只有300fs(RMS),同時其內部集成時鐘恢復電路、預加重模塊、噪聲注入、參考時鐘倍頻、信號均衡電路等,非常適合PCIE3.0接收測試這種速率高同時對信號質量又有很好要求的場合。除此以外,M8020A支持到16.2Gbps信號的8階的預加重,可以充分滿足未來PCIE4.0的接收測試的要求。圖7是用 M8020A進行PCI-E 3.0接收測試的一個示意圖。
▲圖7 PCI-E 3.0接收端測試示意圖。
所謂接收端測試,就是要驗證接收端對于惡劣信號的容忍能力。這就涉及到兩個問題,一個是這個惡劣信號怎么定義,另一個是怎么判斷被測系統能夠容忍這樣的惡劣信號。
首先來看一下這個惡劣信號的定義,這不是一個隨便的差信號就可以,這個信號的惡劣程度有精確定義才能保證測量的重復性。這個惡劣信號通常叫做Stress Eye,即壓力眼圖,實際上是借鑒了光通信里的叫法。這個Stress Eye實際上是用高性能的誤碼儀先產生一個純凈的帶預加重和Preshoot的8Gbps的信號,然后在這個信號上疊加上精確控制的隨機抖動(RJ)、周期抖動(SJ)、差模和共模噪聲以及碼間干擾(ISI)。為了確定每個成分的大小都符合規范的要求,所以測試之前需要先用示波器對誤碼儀輸出的信號進行校準,確定產生的是規范要求的Stress Eye。其中信號的RJ、SJ、共模噪聲等都可以由誤碼儀產生,而ISI抖動是由PCI-E協會提供的CLB3或CBB3夾具產生,其夾具上會模擬典型的主板或者插卡的PCB走線對信號的影響。
為了方便接收測試,CLB3和CBB3夾具相對于前一代夾具做了一些電路的改動,主要是考慮了接收測試的情況。比如為了切換測試碼型,在PCI-E2.0的CLB2夾具上,從主板發過來的RefClk是直接環回到主板的Lane0的接收端,不能斷開;而在PCI-E3.0的CLB3的夾具上,由于要考慮到可能還會對主板Lane0的接收端進行測試,因此這個連接是通過SMP的跳線完成的。另外,在CBB3的夾具上,增加了專門的Riser板以模擬服務器等應用場合的走線對信號的影響。要精確產生PCI-E3.0要求的壓力眼圖需要調整很多參數,比如需要調整輸出信號的幅度、預加重、差模噪聲、隨機抖動、周期抖動等以滿足眼高、眼寬和抖動的要求。而且各個調整參數之間也會相互制約,比如調整信號的幅度時,除了會影響眼高也會影響到眼寬,因此各個參數的調整需要反復進行以得到一個最優化的組合。校準中會調PCI-SIG的Sigtest軟件對信號進行通道模型嵌入和均衡,并計算最后的眼高和眼寬。如果沒有達到要求,會在誤碼儀中進一步調整注入的隨機抖動和差模噪聲的大小,直到眼高和眼寬達到以下參數要求:
校準時,信號的參數分析和調整需要反復進行,人工操作非常耗時耗力。為了解決這個問題,Keysight公司在業內最早推出了N5990A的針對PCI-E3.0接收容限的自動測試軟件,這個軟件可以提供設置和連接向導、控制誤碼儀和示波器完成自動校準、發出訓練碼型把被測件設置成環回狀態并自動進行環回回來數據的誤碼率統計。
設置被測件進入環回模式有兩種方式,一種是借助于誤碼儀本身的Training序列,另一種是借助于芯片廠商提供的工具(比如Intel公司的ITP工具)。傳統的誤碼儀不具有對于PCIE協議理解的功能,只能盲發訓練序列,缺點是沒有經過正常的預加重和均衡的協商,這就可能造成不能把被測件設置成正確的狀態。而很多新的CPU平臺要求誤碼儀和被測件進行有效的預加重和均衡的溝通,然后再進行環回,這就要求誤碼儀能夠識別對端返回的訓練序列并做相應的調整。M8020A平臺集成了Link協商的功能,能夠真正和被測件進行訓練序列的溝通,可以有效地把被測件設置成正確的環回狀態。
當被測件進入環回模式并且誤碼儀發出壓力眼圖的信號后,被測系統會把其從RX端收到的數據再通過TX端發送出來送回誤碼儀,誤碼儀通過比較誤碼來判斷數據是否被正確接收,測試通過的標準是要求誤碼率小于1E-12。
-
信號
+關注
關注
11文章
2714瀏覽量
76041 -
總線
+關注
關注
10文章
2794瀏覽量
87584 -
PCIe
+關注
關注
14文章
1147瀏覽量
81636 -
PCIE3.0
+關注
關注
0文章
13瀏覽量
6943 -
單元測試
+關注
關注
0文章
37瀏覽量
3120
原文標題:【硬件的單元測試_3】PCIe 3.0測試
文章出處:【微信號:Hardware_10W,微信公眾號:硬件十萬個為什么】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論