精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一文詳解Xilinx GTX/GTH及2D eye scan的基本原理

電子設計 ? 來源:懶癌晚期患者 ? 作者:懶癌晚期患者 ? 2020-12-15 15:54 ? 次閱讀

本文介紹Xilinx GT的一些概念,對GT沒有概念但是有時間的童鞋推薦先看一下此文(Xilinx 7系列FPGA 高速收發器GTX/GTH的一些基本概念),補充一些基礎概念。

隨著高速數據傳輸的普及,Serdes已經成為FPGA上重要的I/O接口。而線速率也不斷的提高。更高的線速率也就帶來了更大的通道衰減影響。通常,Serdes接收端需要打開內部的均衡來對高速串行信號進行處理,保證內部的有效信號能夠等到放大而噪聲可以被抑制,并最終恢復出正確的數據。

通常,高速信號到達接收端的Pin位置,稱為遠端;進入Pin后,被接收端的均衡處理之后的信號,稱為近端。在一些均衡能力比較優秀的Serdes上(例如Xilinx的GTX/GTH),遠端處的眼圖(可以通過高速示波器進行測量)無法睜開,但是近端處的眼圖可以完全睜開。這就是均衡器無法忽視的重要作用。

這也帶來一個問題,就是如何測量眼圖。針對遠端眼圖,可以通過高速示波器來進行測量。但是這個測量在很多情況下并不容易,比如沒有足夠高速的示波器,或者由于FPGA多為BGA封裝導致Serdes的RX Pin沒有合適的測試點來進行測試。而近端眼圖,由于近端的定義就是在Serdes的PMA內部,所以沒有使用高速示波器直接測量眼圖的可能。那么如何評價近端眼圖,就成了一個問題。

Xilinx 7系列(及以后)的GTX/GTH中提供了2D眼圖測量的功能,通常稱呼為2D eye scan,可以用來測量近端眼圖。Xilinx提供的GT測試工具ibert中,就是利用這個功能進行眼圖的測量。

圖片來自UG908

關于GT的基本結構和eye scan的具體原理,由于文檔已經做了充分的描述,這里就不重復贅述了。下文將會用簡單通俗的語言來描述2D eye scan的基本原理,出發點是易于理解。所以在準確性和嚴謹程度上肯定有所欠缺,這里先說一聲抱歉。

從字面分析,2D eye scan的意思就是二維眼圖掃描。二維的意思自然是橫縱兩個坐標。所以眼圖掃描的基本原理就是將二維眼圖的最大范圍坐標化,將眼圖整體變為一個二維矩陣區域。

眼圖掃描的過程就是依次遍歷眼圖的二位矩陣區域,并和眼圖掃描的正中間區域做對比,記錄錯誤值,然后依據錯誤值,用不同的顏色來繪制當前二位矩陣中某個點,最終組成一個眼圖。

用更通俗的話來解釋,就是眼圖被劃分為一個分辨率是N*M的圖片。測量眼圖的時候會依次遍歷N*M個點,并和中心點的數據做對比。多次對比后記錄值不一樣的次數,即誤碼率。當遍歷完N*M個點之后,依據每個點記錄的誤碼率來用不同的顏色繪制一副圖,即為眼圖。

圖片來自UG476

從上圖的左邊可以看到,每一個點相對中心點都有一個水平偏移量和垂直偏移量,這就等價于每個點的坐標值(至于0,0點在左下角還是在中心點都只是簡單的坐標變換而已)。

從圖中的右邊可以看到,最終眼圖的顏色是依據誤碼率繪制的,結合前文來自UG908的截圖,可以清楚的看到當誤碼率越低,顏色越偏向藍色(深藍色);當誤碼率越高,顏色越偏向紅色。理論上,越接近中心的點,誤碼率越低,所以越偏藍色,而越接近外圍的點,誤碼率越高,所以越偏紅色。所以實際獲取的眼圖樣子,是中心藍色,四周紅色的眼圖。

所以從原理上說,2D眼圖的測量步驟其實是遍歷整個N*M的點陣,計算每一個點與中心點數據值的誤碼率。當得到點陣誤碼率的數據之后,后面僅僅是繪圖以便美觀顯示的事情。

具體的測量細節可以參考UG476的第四章。這里直接給出結論,內置的2D eye scan是逐個點進行測量的,所以每次測量只需一組坐標值。從微觀看來,逐點測量由于是串行的,所以是比較慢的。但是從宏觀來看,整體測量速度是比較快速的。

另外一個優點就是,眼圖的測量不需要特殊的配置和數據,也不會對數據鏈路帶來任何負面影響。由于是和中心點數據的對比,所以無論GT跑的是什么數據流,都可以進行測量,也沒有影響。這就擴展了這一功能的使用范圍。例如ibert的誤碼率只能統計PRBS,無法用于實際數據的統計/測試。而這一功能可以實時測試,不影響GT正常業務的運行。將這一功能集成到最終版本中,可以作為實時監控高速鏈路質量的一個參考標準。

如果GT無法正確回復出數據,則中心點的數據不會穩定。這樣統計出來的結果也不會穩定的顯示為一個眼睛的圖案,而是一個奇怪的圖案。如果GT能正確恢復出數據,那么中心點一定是穩定的數據,所以無論眼圖是否睜開,張開多大,大體的形狀還是一個眼睛的圖案。進而,眼圖張開的大小就代表信號質量的好壞。所以2D eye scan的結果對鏈路信號質量的判斷,是非常有幫助的。

由于是逐點測試,所以這個過程相對來說更適合基于CPU/MCU的軟件來實現。Xilinx提供了兩個XAPP來實現該功能,其核心的控制都是交給MCU軟核MicroBlaze來實現的。
https://www.xilinx.com/support/documentation/application_notes/xapp743-e...
https://www.xilinx.com/support/documentation/application_notes/xapp1198-...

下面介紹一下具體的操作步驟。

首先,eye scan的具體操作是需要使用DRP的端口,這一端口也是容易和CPU接口適配的。

使用DRP端口的優點是,主要步驟不占用FPGA可編程邏輯資源。代價是這個結構更適合MCU接口的實現,如果使用普通邏輯資源實現,會需要設計接口。

1.部分默認端口可以直接連接到地,例如:
EYESCANMODE
EYESCANTRIGGER

EYESCANRESET端口如果不需要使用,也是可以連接到地。

2.下面幾個信號設置為1
ES_SCAN_EN
PMA_RSV2[5]
ES_ERRDET_EN
ES_QUAL_MASK=(80’b1)

3.根據位寬(RX_INT_DATAWIDTH)設置ES_SDATA_MASK
40-bit 位寬: ES_SDATA_MASK = (40'b1, 40'b0)
32-bit位寬: ES_SDATA_MASK = (40'b1, 32'b0, 8'b1)
20-bit位寬: ES_SDATA_MASK = (40'b1, 20'b0, 20'b1)
16-bit位寬: ES_SDATA_MASK = (40'b1, 16'b0, 24'b1)

4.根據誤碼率設置ES_PRESCALE,關于這個參數的值,可以暫時跳過,等看完下文,理解原理之后再選擇合適的值寫入。

上述設置只需要設置一次即可。其中要注意,ES_QUAL_MASK和ES_SDATA_MASK都是80bit數據,需要分多次才能寫入。7系列的GTX/GTH,DRP數據位寬為16bit,所以需要5次才能完成80bit的寫入。

開始遍歷每一個點(即每一對橫縱坐標)。橫軸由ES_HORZ_OFFSET控制,縱軸由ES_VERT_OFFSET控制。

1.對每個點,將縱坐標寫入ES_VERT_OFFSET

這里需要注意,ES_VERT_OFFSET和ES_PRESCALE的地址是一樣的,高5bit是給ES_PRESCALE使用,低9位給ES_VERT_OFFSET使用。對于ES_VERT_OFFSET,0-7bit作為地址使用。第8位作為一個控制位,先填入0。DFE條件下后續還需要用到。

2.將橫坐標寫入ES_HORZ_OFFSET

3.將ES_CONTROL的低兩位設置為2'b01

這里需要先讀取出來,然后將低位設置位01,高位不變,再寫入ES_CONTROL寄存器中。

4.循環查詢es_control_status寄存器的值,如果發現最低位是1,表明采樣/記錯計數器溢出了,該點統計完畢(關于兩個計數器的含義,下文在做討論)。此時可以將ES_CONTROL的最低兩位設置為2'd00,以便于下一個點的測量。

5.讀取ES_ERROR_COUNT和ES_SAMPLE_COUNT寄存器的值,分別為記錯寄存器和采樣寄存器。

6.計算一下誤碼率

誤碼率的計算公式為,誤碼數目 / 采樣數目。

誤碼數目即為ES_ERROR_COUNT的值,如果該值為0,則誤碼率直接為0。

采樣數目的計算則相對負責。具體公式為:

SAMPLE/_COUNT=ES/_SAMPLE/_COUNT/times2^{(ES/_PRESCALE+1)}/times RX/_INT/_DATAWIDTH

可以看到,具體的采樣數和ES_SAMPLE_COUNT的值是有一個非線性的計算關系。

通過上述公式可以計算出采樣數的值,然后參與運算即可獲取誤碼率這一數據。

7.當使用DFE的時候,需要將ES_VERT_OFFSET的第八位設置為1(前文描述設置為0),然后重新測試一邊,計算出另一個誤碼率,和設置為0的誤碼率取一次平均才為最終的誤碼率。

這樣就完成一個點的測試了。

所以測試的大體流程就是先設置好一些固定的參數,然后設置橫縱坐標,開始測試。等測試結束后獲取采樣數和錯誤數兩個值,計算誤碼率即可。DFE模式下需要將縱坐標的一位取反后重新測算一下,然后兩個誤碼率取平均。

這里就能看出來測試的具體細節。內部測試提供了兩個計數器,一個用于統計采樣次數,另一個用于統計錯誤次數。測試過程其實就是進行多次的數據對比。對比一次,采樣次數加1,如果數據不對,則錯誤次數也加1。等到兩個計數器有一個溢出的時候就可以結束統計了。這樣會有兩種情況。
1.錯誤計數器溢出,采樣計數器沒有溢出,此時錯誤值比較大,可以保證精度。
2.采樣計數器溢出,錯誤計數器沒有溢出,此時采樣值比較大,誤碼率往往比較低。
由于兩個技術器溢出值相差非常大,所以不可能同時溢出。如果都沒有溢出,那么測試就不會停止。
用這種方法,可以獲取一個比較好的測試精度結果,也便于測試流程的控制。
另外,理解了這一流程,并觀察采樣值的計算公式,就能反推出ES_PRESCALE比較合適的值。
通過逐點的測量,就可以獲取完整的眼圖數據,然后進行繪圖即可。

2D eye scan的原理就分析完了。

下面分析一下實際操作中的一些問題。

1.ES_PRESCALE:如果確定這個值

這個參數實際控制的是采樣數的計算結果。通常情況下,通過公式反推,選區一個固定值就好。但是實際情況下,如果使用動態的控制,可以提高精度。關于這部分的討論就非常深入了。有興趣的童鞋可以再熟悉2D eye scan之后進行研究。

2.采樣點的數量:一定要逐點嗎

從手冊中可以查詢到ES_HORZ_OFFSET和ES_VERT_OFFSET的范圍。實際操作中,其實并不需要逐點測試。從圖片的角度觸發,逐點(或者點間隔較小)的好處就是圖片的分辨率較高。同時弊端就是花費的時間較長。通常使用中并不需要非常高的眼圖分辨率,尤其是并不需要將眼圖美觀的繪制出來的條件下,適當加大間隔可以快速獲取眼圖的基本信息。依據基本信息再考慮是否提高精度,改變參數等操作,更為合適。ibert中也提供了調整采樣點間隔的選項。

3.關于ibert眼圖顯示的美觀性和眼圖的顯示

根據上述分析,眼圖最終結果其實是一個顆粒感比較強的圖片。ibert中較為平滑/美觀的眼圖其實是美化過的結果。右鍵點擊眼圖彈出的菜單中可以選擇沒有沒畫過的點陣圖。

ibert繪制的平滑眼圖

ibert的原始點陣眼圖,每個點為細長的橫條形狀

以上兩張圖為同一次測量后調整ibert顯示參數獲取的不同效果,可以看到ibert默認顯示是經過了美化的。而原始圖就是一個顆粒感很強的點陣圖。

下圖為自行設計/實現2D eye scan后自行繪制的眼圖。

自行實現2D eye scan測量后繪制的眼圖

原始數據已經有了的情況下,眼圖的繪制其實只是一個繪圖的軟件設計。考慮到大部分FPGA開發者可能并不擅長于圖形界面的開發,所以推薦了解一下tk繪圖。不過更好的方案是讓專業的人做專業的事情。通過基本的數據,即使沒有繪圖,也能做很多事情了。

4.DRP如何控制

官方推薦的方案是利用MCU來進行控制,比如MicroBlaze的軟核。

另外可以通過JTAG,由PC發起控制。原廠方案為AXI JTAG。

本人是通過TCL和JTAG來控制VIO接口,進而控制DRP端口的。關于這個方案,除了控制DRP端口,還可以控制BRAM。具體可以參考專欄文章:Vivado功能完善:如何用Tcl/VIO更新BRAM中的數據

5.寄存器的地址

上文的描述中最大的問題就是沒有介紹寄存器和相關的地址。關于各個寄存器的名稱再文章已經給出了。具體的地址可以參考UG476的附錄D(通常都是最后一個附錄)。
ES_QUAL_MASK 0x031~0x035
ES_SDATA_MASK 0x036~0x03A
PMA_RSV2 0x082
ES_ERRDET_EN 0x03D
ES_EYE_SCAN_EN 0x03D
ES_CONTROL 0x03D
ES_PRESCALE 0x03B
ES_VERT_OFFSET 0x03B
ES_HORZ_OFFSET 0x03C
es_control_status 0x151
ES_ERROR_COUNT 0x14F
ES_SAMPLE_COUNT 0X150

這里給出7系列GT的部分寄存器地址。

整套方案可以移植到UltraScale/UltraScale+的GT上,需要注意的是,寄存器地址需要重新核對一下。可以確定很多寄存器的地址/定義都不一樣。

編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 收發器
    +關注

    關注

    10

    文章

    3397

    瀏覽量

    105864
  • 示波器
    +關注

    關注

    113

    文章

    6190

    瀏覽量

    184521
  • 寄存器
    +關注

    關注

    31

    文章

    5317

    瀏覽量

    120008
  • Xilinx
    +關注

    關注

    71

    文章

    2163

    瀏覽量

    121010
收藏 人收藏

    評論

    相關推薦

    RNN的基本原理與實現

    RNN,即循環神經網絡(Recurrent Neural Network),是種特殊類型的人工神經網絡,專門設計用于處理序列數據,如文本、語音、視頻等。以下是對RNN基本原理與實現的介紹:
    的頭像 發表于 11-15 09:49 ?229次閱讀

    高斯濾波的基本原理有哪些

    高斯濾波的基本原理可以從以下幾個方面進行闡述: 、定義與性質 定義 :高斯濾波(Gaussian Filter)是種常見的圖像處理技術,實質上是種信號的濾波器,用于平滑和降噪圖像
    的頭像 發表于 09-29 09:27 ?369次閱讀

    3DP工藝基本原理

     3DP工藝,全稱Three-Dimensional Printing(三維打印),是種3D打印技術,其基本原理可以詳細闡述如下:
    的頭像 發表于 09-16 15:32 ?572次閱讀

    TMAG511x 2D鎖扣的優點

    電子發燒友網站提供《TMAG511x 2D鎖扣的優點.pdf》資料免費下載
    發表于 09-13 09:53 ?0次下載
    TMAG511x <b class='flag-5'>2D</b>鎖扣的優點

    神經網絡的基本原理

    神經網絡,作為人工智能領域的個重要分支,其基本原理和運作機制直是人們研究的熱點。神經網絡的基本原理基于對人類大腦神經元結構和功能的模擬,通過大量的神經元相互連接、協同工作,實現對信
    的頭像 發表于 07-01 11:47 ?968次閱讀

    AC/DC電源模塊的基本原理與應用

    BOSHIDA AC/DC電源模塊的基本原理與應用 AC/DC電源模塊是種將交流電轉換為直流電的電子設備,它廣泛應用于電子設備、電信設備、工控設備以及家電等領域。本文將介紹AC/DC電源模塊
    的頭像 發表于 05-21 11:15 ?779次閱讀
    AC/DC電源模塊的<b class='flag-5'>基本原理</b>與應用

    通過2D/3D異質結構精確控制鐵電材料弛豫時間

    受經典德拜弛豫啟發的米勒模型提供了通過操縱弛豫時間來控制自發極化的理論框架。作者通過使用層轉移技術形成的2D/C-3D/2D異質結構克服了傳統異質結存在的鐵電性惡化和能量損失的問題。
    的頭像 發表于 04-29 10:27 ?580次閱讀
    通過<b class='flag-5'>2D</b>/3<b class='flag-5'>D</b>異質結構精確控制鐵電材料弛豫時間

    基于MAXWELL 2D 的永磁電機研究

    電子發燒友網站提供《基于MAXWELL 2D 的永磁電機研究.pdf》資料免費下載
    發表于 04-23 14:18 ?7次下載

    有了2D NAND,為什么要升級到3D呢?

    2D NAND和3D NAND都是非易失性存儲技術(NVM Non-VolatileMemory),屬于Memory(存儲器)的種。
    的頭像 發表于 03-17 15:31 ?928次閱讀
    有了<b class='flag-5'>2D</b> NAND,為什么要升級到3<b class='flag-5'>D</b>呢?

    介紹種使用2D材料進行3D集成的新方法

    美國賓夕法尼亞州立大學的研究人員展示了種使用2D材料進行3D集成的新穎方法。
    的頭像 發表于 01-13 11:37 ?1029次閱讀

    了解3D視覺和2D視覺的區別

    了解3D視覺和2D視覺的區別 3D視覺和2D視覺是兩種不同的視覺模式,其區別主要體現在立體感
    的頭像 發表于 12-25 11:15 ?2879次閱讀

    2D與3D視覺技術的比較

    作為個多年經驗的機器視覺工程師,我將詳細介紹2D和3D視覺技術的不同特點、應用場景以及它們能夠解決的問題。在這個領域內,2D和3D視覺技術
    的頭像 發表于 12-21 09:19 ?1063次閱讀

    詳解pcb的msl等級

    詳解pcb的msl等級
    的頭像 發表于 12-13 16:52 ?9105次閱讀

    使用Python從2D圖像進行3D重建過程詳解

    有許多不同的方法和算法可用于從2D圖像執行3D重建。選擇的方法取決于諸如輸入圖像的質量、攝像機校準信息的可用性以及重建的期望準確性和速度等因素。
    的頭像 發表于 12-05 14:07 ?2828次閱讀
    使用Python從<b class='flag-5'>2D</b>圖像進行3<b class='flag-5'>D</b>重建過程<b class='flag-5'>詳解</b>

    無功補償裝置的基本原理及作用

    無功補償裝置的基本原理及作用
    的頭像 發表于 11-27 10:46 ?622次閱讀
    無功補償裝置的<b class='flag-5'>基本原理</b>及作用