Xilinx GT学习
一、GT的概念
Xilinx FPGA的GT意思是Gigabyte Transceiver。通常稱呼為Serdes、高速收發(fā)器。GT在xilinx不同系列有著不同的產(chǎn)品,從7系列到UltraScale系列分別有GTP、GTX、GTZ、GTH、GTY和GTM。不同GT整體結(jié)構(gòu)上類似,為了支持越來越高的line rate,在細(xì)節(jié)上有著不同的差異。
Blog:FPGA Xilinx 高速串行收發(fā)器橫向比較_搞FPGA開發(fā)的Tony老師的博客-CSDN博客_xilinx高速串行收發(fā)器https://blog.csdn.net/wuyanbei24/article/details/118310132 對Xilinx GT各系列進(jìn)行了橫向的比較,本文章主要以UltraScale系列里面的GTH為例做介紹:
二、GT Quad
????????Xilinx FPGA中的GT資源以Quad為單位
????????一個GT Quad包含一個GTHE3/4_COMMON 和 4個 GTHE3/4_CHANNEL。
????????每個GTHE3/4_COMMON包含兩個QPLL,在設(shè)計中,只有需要使用QPLL時,才需要例化GTHE3/4_COMMON。
????????每個GTHE3/4_CHANNEL包含一個CPLL和一個transmitter和一個reciever
?Reference Clock Selection and Distribution
????????一個GT Quad包含一個GTHE3/4_COMMON 、 4個GTHE3/4_CHANNEL、2對專用外部參考時鐘pin、專用參考時鐘routing。每個transceiver都需要例化對應(yīng)的GTHE3/4_CHANNEL,但只有需要使用高性能QPLL時才需要例化GTHE3/4_COMMON。
????????通常Quad(Q(n))的參考時鐘可以由其他Quad(最多上/下2個相鄰Quad)的輸入管腳輸入
三、GT Channel
????????整個GT channel可以分為兩層:
????????PMA:Physical Media Attachment,物理媒介附加層
????????PCS:Physical Coding Sublayer,物理編碼子層
下面根據(jù)收發(fā)鏈路分別講解:
3.1 Transmitter
3.1.1 TX Interface
????????TX Interface分成內(nèi)部數(shù)據(jù)位寬和FPGA接口位寬,其中內(nèi)部數(shù)據(jù)歸屬于TXUSRCLK時鐘域,FPGA接口數(shù)據(jù)歸屬于TXUSRCLK2時鐘域,而內(nèi)部數(shù)據(jù)位寬支持2byte/4byte,FPGA接口數(shù)據(jù)位寬支持2byte/4byte/8byte,因此,決定了TXUSRCLK和TXUSRCLK2有一定的時鐘倍數(shù)關(guān)系,TXUSRCLK和TXUSRCLK2的時鐘倍數(shù)關(guān)系如下表所示,其中TX_INT_DATAWIDTH屬性設(shè)置為“0”,表示內(nèi)部數(shù)據(jù)位寬為2byte,如果設(shè)置為“1”,則表示內(nèi)部數(shù)據(jù)位寬為4byte
線速率大于8.1875Gb/s的時候TX_INT_DATAWIDTH應(yīng)當(dāng)置1
3.1.2 TX 8B/10B Encoder
?????? 8B/10B的編碼理論參考blog:
8B/10B Encode/Decode詳解https://www.cnblogs.com/YINBin/p/11011232.html???????? ???8B/10B編碼的目的1是保證數(shù)據(jù)有足夠的切換提供給時鐘恢復(fù)電路(CDR),2提供一種將數(shù)據(jù)對齊到字的方法,3.同時線路可以保持良好的直流平衡。為什么要做直流均衡,參考blog:Serdes高速收發(fā)器和CDR技術(shù)https://blog.csdn.net/qq_16423857/article/details/110135690
3.1.3 TX Gearbox(速率變換箱)
????????8B/10B編碼使得帶寬利用率80%。一些高速數(shù)據(jù)速率協(xié)議使用64B/66B編碼來減少8B/10B編碼的開銷,同時保留編碼方案的優(yōu)點。TX Gearbox提供了對64B/66B和64B/67B編碼支持(header和payload的combining)。TX Gearbox支持2字節(jié)、4字節(jié)和8字節(jié)接口定義,但是數(shù)據(jù)scrambing是在FPGA邏輯內(nèi)實現(xiàn)的。
3.1.4 TX Buffer
????????為了解發(fā)送的TXBuffer的作用,首先得搞清楚TX發(fā)送端的時鐘域,TX發(fā)送端的時鐘域如圖所示。
????????圖中紅色方框就是TXBuffer, TX Buffer連接著兩個不同的時鐘域XCLK和TXUSRCLK,在發(fā)送端的PCS子層內(nèi)部包含兩個時鐘域,XCLK(PMA并行時鐘域)TXUSRCLK時鐘域,為了數(shù)據(jù)發(fā)送的穩(wěn)定,XCLK和TXUSRCLK必須是速率匹配,相位差可以消除的,TX Buffer主要用于匹配兩時鐘域的速率和消除兩時鐘域之間的相位差。
????????TX Buffer也可以被旁路,TX發(fā)送端提供了一個相位對齊電路,可以解決XCLK和TXUSRCLK時鐘域之間的相位差,但是TX_XCLK_SEL需設(shè)置為“TXUSR”來保持XCLK時鐘域和TXUSRCLK保持同頻。
3.1.4 TX PMA
????????發(fā)送PMA包含并串轉(zhuǎn)換(PISO)和模擬部分的控制(差分電壓控制、發(fā)送器預(yù)加重、校準(zhǔn)端接電阻,用于滿足SI等)
3.2 Reciever
接收鏈路從PMA-->PCS
3.2.1 RX Equalizer (DFE and LPM)
????????傳輸介質(zhì)和通道是帶寬受限的,通過它的信號會衰減和失真。均衡器主要用于補償由于頻率不同而引起的阻抗或者衰減差異。
????????GTH收發(fā)器,基于系統(tǒng)級的功耗和性能的權(quán)衡,有兩種類型的自適應(yīng)濾波可用:
????????功耗優(yōu)化和低通道損耗的低功耗模式(LPM):
????????均衡更低損耗通道的判決反饋均衡模式(DFE):
3.2.2 RX CDR
????????CDR:Clock Data Recovery
?????????CDR FSM使用來自邊緣和數(shù)據(jù)采樣器的數(shù)據(jù)來確定傳入數(shù)據(jù)流的相位并控制相位插值器(PIs)。邊緣采樣器的相位鎖定在數(shù)據(jù)流的過渡區(qū)域,而數(shù)據(jù)采樣器的相位則位于數(shù)據(jù)眼的中間。
?????????CPLL或QPLL為相位內(nèi)插器提供基準(zhǔn)時鐘。相位內(nèi)插器依次產(chǎn)生精細(xì)的、均勻分布的采樣相位,以允許CDR狀態(tài)機具有精細(xì)的相位控制。CDR狀態(tài)機可以跟蹤傳入的數(shù)據(jù)流,這些數(shù)據(jù)流可以與本地PLL參考時鐘存在頻率偏移。
3.2.3 RX Fabric Clock Output Control
與發(fā)送一樣,使用RXOUTCLK作為RXUSECLK的基準(zhǔn)時鐘
3.2.4 RX Byte and Word Alignment
????????輸入到FPGA收發(fā)器的串行數(shù)據(jù)在解串(串并轉(zhuǎn)換)之前必須進(jìn)行符號邊界對齊。為了保證數(shù)據(jù)對齊,發(fā)送器發(fā)送一個通常稱為comma碼(K碼)的字符,接收器在輸入的數(shù)據(jù)里查找comma碼。當(dāng)發(fā)下comma碼后,則將comma移動到字符邊界,這樣使得接收到的并行數(shù)據(jù)匹配發(fā)送的并行數(shù)據(jù)。
3.2.5 RX Elastic Buffer
????????RX Elastic Buffer:GTH收發(fā)器內(nèi)部包括兩個內(nèi)部并行時鐘域:PMA并行時鐘域XCLK和RXUSRCLK時鐘域。為了正確接收數(shù)據(jù),PMA并行速率必須匹配RXUSRCLK時鐘速率,并且解決跨時鐘域問題。
?RX接收端彈性緩沖器是一個重要的功能,和TX接收端緩沖相比,RX多出了一個“彈性”屬性,意味著和TX發(fā)送端相比,RX彈性緩沖器有更多的功能(RX時鐘糾正和RX通道綁定)
????????RX Clock Correction:RX彈性緩沖器的“彈性”反映在可以通過時鐘糾正來調(diào)整XCLK和RXUSRCLK的頻率差。對于RX接收端來說,即便XCLK和RXUSRCLK運行在同一個時鐘頻率,但往往存在一定的差異,這種差異很容易導(dǎo)致RX彈性緩沖器寫滿或者讀空,時鐘糾正功能應(yīng)運而生。時鐘糾正功能如圖所示。
????????通俗的講,在TX發(fā)送端的時候,我們會定期的發(fā)送K碼用于保證接收端邊界對齊,在RX彈性緩沖器里面數(shù)據(jù)不足的時候,接收到的K碼數(shù)據(jù)將被復(fù)制寫入RX彈性緩沖器,以保持RX彈性緩沖器處于半滿。當(dāng)RX彈性緩沖器數(shù)據(jù)過多的時候,接收到的K碼數(shù)據(jù)將被舍棄不寫入RX彈性緩沖器,以保持RX彈性緩沖器處于半滿。
????????RX Channel Bonding:通道綁定功能同樣體現(xiàn)RX彈性緩沖器的“彈性”之處,對于像PCIE和SRIO等協(xié)議,可以支持多l(xiāng)ane傳輸來提高傳輸總帶寬。因為傳輸信道的原因,TX發(fā)送端同一時刻發(fā)送的數(shù)據(jù)在RX接收端不能被所有的lane同一時刻接收,每一個lane接收存在時間差,那么在恢復(fù)數(shù)據(jù)的時候就要重新對齊,因此需要在RX接收端執(zhí)行通道綁定功能。
????????為了實現(xiàn)這個功能,TX發(fā)送端在發(fā)送的數(shù)據(jù)流中加入一個同樣的通道綁定序列,子RX接收端根據(jù)每一個lane檢測到的通道綁定序列在各自的RX彈性緩沖器做相應(yīng)的調(diào)整和延遲,最終使得各個lane的數(shù)據(jù)不存在偏移,在FPGA RX Interface的輸出能和TX發(fā)送端發(fā)送的數(shù)據(jù)一樣,功能如圖所示,左邊是未對齊數(shù)據(jù),右邊是對齊的數(shù)據(jù)。
????????RX channel bonding支持8B/10B編碼,但是不支持64B/66B、64B/67B、128B/130B和擾碼數(shù)據(jù)。
3.2.6 others
????????Rx 8B/10B Decoder、RX Interface等與TX端類似
????????Rx 8B/10B Decoder預(yù)設(shè)K碼
結(jié)束語
? ? ? ? 本文主要是對官方手冊的學(xué)習(xí)筆記,對應(yīng)GT的詳細(xì)細(xì)節(jié)沒有過多的深挖。GT作為FPGA內(nèi)的一種資源,對于我們使用者來說更多的是對其有一個大致了解,其具體細(xì)節(jié)不用太過深挖,一個是GT資源隨著升級其細(xì)節(jié)也有很多變化,但大體結(jié)構(gòu)是換湯不換藥;二是隨著FPGA廠商IP的完善,針對不同的應(yīng)用都有各種底層使用GT資源的更上層的IP core,比如Aurora、PCIe、以太網(wǎng)、interlaken等等,如果只是站在使用者的角度來說的話,可能很少會接觸到GT底層。當(dāng)然,通過對GT資源的理解也更加方便我們上層應(yīng)用的開發(fā)和調(diào)試。如果涉及到太底層的問題可以在需要的時候再翻手冊查詢。
總結(jié)
以上是生活随笔為你收集整理的Xilinx GT学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ZOJ 3380 Patchouli's
- 下一篇: qgmt数据,就差白城后面的一个城市有点