本來(lái)寫(xiě)了一篇關(guān)于高速收發(fā)器的初步調(diào)試方案的介紹,給出一些遇到問(wèn)題時(shí)初步的調(diào)試建議。但是發(fā)現(xiàn)其中涉及到很多概念。逐一解釋會(huì)導(dǎo)致文章過(guò)于冗長(zhǎng)。所以單獨(dú)寫(xiě)一篇基本概念的介紹,基于Xilinx 7系列的GTX。
需要說(shuō)明,文本只是初步介紹基本概念,會(huì)盡量使用通俗淺顯的描述而避免使用專業(yè)詞匯,也只會(huì)描述一些基本的、常用的內(nèi)容,不能保證全面型。所以從專業(yè)角度看,可能部分用詞和原廠文檔有出入,同時(shí)覆蓋面不夠,請(qǐng)見(jiàn)諒。
GTP、GTX、GTH和GTZ:
這四個(gè)是Xilinx 7系列FPGA全系所支持的GT,GT的意思是Gigabyte Transceiver,G比特收發(fā)器。通常稱呼為Serdes、高速收發(fā)器,GT,或者用具體型號(hào)(例如GTX)來(lái)稱呼。
7系列中,按支持的最高線速率排序,GTP是最低的,GTZ是最高的。GTP被用于A7系列,GTZ被用于少數(shù)V7系列。從K7到V7,最常見(jiàn)的是GTX和GTH。GTH的最高線速率比GTX稍微高一點(diǎn)點(diǎn)。
GTX和GTH的文檔都是UG476。從這里就能看出來(lái),這兩個(gè)GT的基本結(jié)構(gòu)大同小異。所以掌握一個(gè),另一個(gè)基本也就熟悉了。
UG476文檔鏈接:http://link.zhihu.com/?target=https%3A//www.xilinx.com/support/documenta...
TX和RX:
嚴(yán)格說(shuō)TX應(yīng)該是Transmitter,表示發(fā)送部分。GTX的TX部分結(jié)構(gòu)圖如下:
圖片來(lái)自UG476
RX的全稱是Receiver,結(jié)構(gòu)圖如下
圖片來(lái)自UG476
后面的內(nèi)容會(huì)用到這兩張圖,可以翻看一下。
PMA,PCS
從TX和RX的結(jié)構(gòu)圖可以看到一個(gè)共同點(diǎn):結(jié)構(gòu)圖主體分為兩個(gè)部分,左邊一個(gè)小框圖,右邊一個(gè)大框圖。
左邊小框圖的部分就是PMA,右邊大框圖的部分是PCS。
為了便于理解,PMA的功能可以簡(jiǎn)單描述為:
1.串并轉(zhuǎn)換(圖中的SIPO和PISO);
2.模擬部分;
由此可以反推出來(lái),PCS中的功能,都是并行的數(shù)字電路處理。
理論上說(shuō)GTX的最小必要單元就是PMA,其主要原因就是核心的模擬部分。而PCS理論上可以全部由FPGA普通邏輯來(lái)實(shí)現(xiàn)。當(dāng)然作為硬核提供的PCS功能更多、性能更好、使用更方便。
Elastic Buffer
一般稱為彈性buffer,基本結(jié)構(gòu)是一個(gè)FIFO,常用于處理buffer兩邊的跨時(shí)鐘問(wèn)題。不過(guò)其實(shí)有更多的用途,比如Clock Correction或者Channel Bonding。
另外還有一種不用Elastic Buffer的模式,一般稱為buffer bypass模式,算是一種高級(jí)應(yīng)用。有興趣的童鞋可以參考文檔研究一下。
8b10b
通常說(shuō)8b10b是一個(gè)編碼方式。在這里還指GTX PCS中的一個(gè)模塊。
作為編碼,8b10b有平衡電平,防止連續(xù)1/0的功能。編碼分為正負(fù)碼和特殊K碼。最常用的K碼應(yīng)該是k28.5。8b10b最大的優(yōu)勢(shì)在于自帶錯(cuò)誤檢測(cè)。當(dāng)出現(xiàn)8b10b錯(cuò)誤的時(shí)候,大概率是鏈路質(zhì)量有問(wèn)題。8b10b最大的劣勢(shì)是效率比較低,有20%的額外開(kāi)銷,所以常用于低于8G的場(chǎng)景,最常見(jiàn)的、使用8b10b、同時(shí)又高于8G線速率的似乎是CPRI Rate7,線速率9.8G左右。
作為GTX的一個(gè)模塊,發(fā)送端提供了方便使用的編碼接口,接收端提供了方便使用的輸出指示,直接使用即可。
另外,GTX還提供了Gearbox。除了8b10b之外,還有其他很多編碼方式,比如64b66b,Gearbox就是為這一類編碼做準(zhǔn)備的。
PRBS
PRBS是偽隨機(jī)序列碼,GTX自帶了PRBS的生成器(在TX內(nèi)部)和PRBS接收/檢查模塊(在RX內(nèi)部)。ibert中的誤碼率檢查就是基于內(nèi)置的PRBS模塊。
從結(jié)構(gòu)圖可以看到,PRBS和8b10b沒(méi)有項(xiàng)目連接的直接關(guān)系,所以ibert的測(cè)試中沒(méi)有使用8b10b編碼(也沒(méi)有使用其他編碼)。同時(shí)內(nèi)部的PRBS也不支持使用其他編碼。所以如果想在GTX外部使用PRBS信號(hào)源,可以另外單獨(dú)做PRBS的生成器和校驗(yàn)?zāi)K。Xilinx似乎是有相關(guān)參考設(shè)計(jì)的。
ibert
ibert是Xilinx提供的一個(gè)用于GT輔助調(diào)試的IP。
首先明確一下,這是一個(gè)IP。所以ibert有兩種用法:
1.直接使用example design進(jìn)行獨(dú)立使用;
2.集成到某個(gè)工程中進(jìn)行使用;
ibert最常用的兩個(gè)用途是:
1.基于PRBS模塊的誤碼率檢查;
2.基于眼圖掃描模塊的測(cè)量近端眼圖;
另外,ibert中可以方便的設(shè)置GTX的所有參數(shù)。是個(gè)不錯(cuò)的參數(shù)測(cè)試平臺(tái)。
通??梢試L試幾個(gè)參數(shù)的調(diào)整來(lái)查看對(duì)GTX的誤碼率/眼圖是否有幫助,這幾個(gè)參數(shù)是TX部分的預(yù)加重。而接收端的設(shè)置是均衡模式,由于均衡的原理較為復(fù)雜,而且多為自動(dòng)調(diào)整,所以不會(huì)有簡(jiǎn)單的幾個(gè)參數(shù)就能看出變化。
GTX的分布
7系列FPGA通常按照bank來(lái)分,對(duì)于GTX的bank,一般稱為一個(gè)Quad,原因是一個(gè)bank中有4個(gè)獨(dú)立的GTX通道。每個(gè)通道稱呼為Channel。所以在GTX的代碼中可以看到Channel這個(gè)底層原語(yǔ)。
每個(gè)Quad擁有兩個(gè)參考時(shí)鐘Pin,也可以從上下兩個(gè)Quad中獲取參考時(shí)鐘(如果上下有GTX Quad的話)。
QPLL和CPLL
已經(jīng)知道四個(gè)GTX為一組,稱呼為Quad,每個(gè)GTX稱呼為Channel,就很容易理解QPLL和CPLL了。QPLL是一個(gè)Quad共用的PLL,GTX一個(gè)Quad只有一個(gè)QPLL。CPLL是每個(gè)Channel獨(dú)有的PLL。
從底層角度看,由于CPLL是每個(gè)Channel獨(dú)有的,所以CPLL的所有接口都在Channel這個(gè)底層模塊中。而QPLL是另外使用了一個(gè)叫common的底層模塊。
GTX中QPLL和CPLL,除了數(shù)目(一個(gè)Quad一個(gè)QPLL四個(gè)CPLL)和歸屬(QPLL屬于common,CPLL屬于Channel)不同之外,最大的不同在于支持的最高線速率頻率不同。CPLL最高只有6.xG,而QPLL可以超過(guò)10G(具體數(shù)值要根據(jù)器件的速度等級(jí)來(lái)查詢DataSheet)。
即使QPLL工作在很高的線速率下,Channel也可以工作在較低的線速率下。具體的實(shí)現(xiàn)方案就是1.使用Channel自帶的CPLL而不用QPLL;2.Channel可以將QPLL的速率按2的倍數(shù)進(jìn)行降低;這樣同一個(gè)參考時(shí)鐘下,一個(gè)Quad的不同GTX有機(jī)會(huì)跑在不同的線速率下。當(dāng)然這一需求需要更多的操作,IP本身無(wú)法實(shí)現(xiàn)。
Clock Correction
這個(gè)功能必須使用Elastic Buffer。
原理是指定一個(gè)關(guān)鍵字段(類似于k28.5的二進(jìn)制數(shù)),發(fā)送端定期發(fā)送這個(gè)關(guān)鍵字段,接收端收到這個(gè)關(guān)鍵字段時(shí),會(huì)檢查這個(gè)字段在FIFO中的位置,并通過(guò)插入 無(wú)效數(shù)據(jù)/刪除數(shù)據(jù) 的方法來(lái)調(diào)整,使這個(gè)字段盡可能保持在FIFO的中心部分,防止FIFO溢出。
這個(gè)功能的作用是來(lái)解決不同時(shí)鐘會(huì)導(dǎo)致FIFO溢出的問(wèn)題。
Channel Bonding
這個(gè)功能必須使用Elastic Buffer。
原理是指定一個(gè)關(guān)鍵字段(類似于k28.5的數(shù)字)。當(dāng)多個(gè)GTX都收到這一字段時(shí),會(huì)按照配置進(jìn)行相互校準(zhǔn),來(lái)保證并行數(shù)據(jù)同步輸出。
這個(gè)功能的作用是在多個(gè)GTX之間進(jìn)行同步化處理。
GTX IP及Example Design
GTX的IP是7 Series FPGAs Transceivers Wizard。是一個(gè) 非常有用的工具。
關(guān)于具體的配置,需要依據(jù)具體應(yīng)用來(lái)設(shè)置。這里主要說(shuō)兩點(diǎn)
1.Protocol
圖片來(lái)自GT IP GUI
在IP配置界面的第二個(gè)標(biāo)簽頁(yè)下有一個(gè)Protocol的選項(xiàng),通常默認(rèn)是Start from scratch,代表沒(méi)有任何預(yù)設(shè)值。當(dāng)熟悉GTX并熟悉應(yīng)用的需求后,可以用這個(gè)設(shè)置進(jìn)行逐項(xiàng)調(diào)整。其他選擇都多少加入了一些預(yù)設(shè)值。在不熟悉GTX或者應(yīng)用需求時(shí),可以先使用預(yù)設(shè)配置進(jìn)行學(xué)習(xí)/測(cè)試。
2.Shared Logic
單獨(dú)的GTX通常是無(wú)法直接工作的,而最主要的原因就是GTX的復(fù)位流程。GTX有嚴(yán)格的復(fù)位流程。如果自行設(shè)計(jì),費(fèi)時(shí)費(fèi)力。萬(wàn)幸,Xilinx提供了參考設(shè)計(jì)——Shared Logic。
通常使用Example Design來(lái)作為最終系統(tǒng)集成的GTX IP。這樣做的原因就是包含了需要的復(fù)位控制等輔助設(shè)計(jì),并且接口變得更加簡(jiǎn)單易用。默認(rèn)這部分是包含在Example Design中,而IP可以選擇將這部分重新打包,放入IP Core中。這樣最終的IP不僅僅有GTX的硬核,也有大量Shared Logic這樣用普通可編程邏輯實(shí)現(xiàn)的功能模塊。
圖片來(lái)自GT IP GUI
配置好GTX IP之后,另一個(gè)非常有用的功能就是Example Design。Vivado的一個(gè)優(yōu)點(diǎn)就是幾乎所有的IP都可以非常便捷的生成獨(dú)立完整的Example Design(比如需要獨(dú)立使用ibert的時(shí)候)。
GTX IP是提供源代碼的,最底層就是GTX的Channel和common模塊。用戶可以通過(guò)代碼來(lái)查看相關(guān)的參數(shù)值和端口連接。
GTX的DRP端口
通常一個(gè)內(nèi)部模塊要進(jìn)行重配置,使用的是兩種做法:端口控制和配置參數(shù)控制。
端口控制就是提供一個(gè)控制端口作為開(kāi)關(guān)。比如BRAM端口中的EN和WE,提供高低電平就可以進(jìn)行功能的改變(EN控制是否使用,WE控制讀寫(xiě))。
配置參數(shù)控制,就是有一個(gè)配置參數(shù)表,每一個(gè)參數(shù)擁有一個(gè)唯一地址和對(duì)應(yīng)的數(shù)據(jù)內(nèi)容。通過(guò)改寫(xiě)對(duì)應(yīng)地址的數(shù)據(jù)內(nèi)容來(lái)進(jìn)行功能的改變。
GTX同時(shí)使用了這兩種方式。所以GTX Channel和Common不僅有大量的端口(當(dāng)然大部分端口都是功能端口而不是僅僅作為配置功能),還擁有一張地址表(參考UG476的附錄)。通過(guò)DRP端口可以讀寫(xiě)地址表中的相關(guān)地址,達(dá)到獲取數(shù)據(jù)/改變配置的功能。
一個(gè)常見(jiàn)的應(yīng)用就是線速率切換。這時(shí)候就需要利用DRP端口來(lái)調(diào)整部分參數(shù)的值,然后復(fù)位GTX,來(lái)使GTX工作在不同的線速率下。
另一個(gè)用到DRP的應(yīng)用就是眼圖掃描。希望掃描出GTX的眼圖,除了使用ibert,還可以在設(shè)計(jì)中加入眼圖掃描模塊來(lái)進(jìn)行實(shí)時(shí)掃描,這時(shí)候就需要使用DRP端口。
使用DRP端口的時(shí)候,有一個(gè)地方需要注意,就是DRP端口的時(shí)序。UG476似乎沒(méi)有提供接口時(shí)序。這部分請(qǐng)參考XADC的文檔手冊(cè)——UG480。
圖片來(lái)自UG480
環(huán)回
圖片來(lái)自UG476,左邊為接收端,右邊為發(fā)送端
GTX提供了四種環(huán)回模式,結(jié)合上圖可以看到,環(huán)回路徑分別是1、2、3、4。
1,2是近端環(huán)回,用于測(cè)試GTX本身。3,4是遠(yuǎn)端環(huán)回,用于輔助測(cè)試對(duì)端GTX。
具體的細(xì)節(jié)請(qǐng)參考UG476。這里需要說(shuō)明的是,用的比較多的是2,近端PMA環(huán)回;用的最少的大概是1,近端PCS環(huán)回,基本沒(méi)有什么實(shí)際作用(可以想想為什么)。遠(yuǎn)端環(huán)回需要修改部分參數(shù)才能使用,具體參考文檔。
關(guān)于GTX的一些基礎(chǔ)概念就介紹完畢,更多細(xì)節(jié),還請(qǐng)參考UG476文檔。
編輯:hfy
-
收發(fā)器
+關(guān)注
關(guān)注
10文章
3338瀏覽量
105538 -
Xilinx
+關(guān)注
關(guān)注
70文章
2137瀏覽量
120386
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論