Xilinx 7系列690T FPGA GTX的QPLL和CPLL使用問題
最近使用Xilinx 7系列690T芯片的多個(gè)GTX接口傳輸千兆以太網(wǎng)數(shù)據(jù)幀時(shí),在某些的測試情況下個(gè)別GTX接口會出現(xiàn)少量丟幀的問題,最后通過實(shí)驗(yàn)發(fā)現(xiàn)是時(shí)鐘的分配使用問題,具體而言是GTX接口的QPLL和CPLL的使用問題。
情況說明
本次調(diào)試的主要任務(wù)是調(diào)通FPGA板子(型號為690T)上的24個(gè)GTX接口(對應(yīng)于24個(gè)SGMII接口)。每個(gè)BANK上有4個(gè)GTX接口,每個(gè)接插件上也是4個(gè)GTX接口。如下圖所示。
1、出現(xiàn)問題波形
連接數(shù)據(jù)源,下載自回環(huán)程序測試接口,發(fā)現(xiàn)X1 AB,X2AB,X3 AB 正常,X1 CD,X2 CD,X3 CD(就是靠后的一排)有少量丟幀。正常的口和有丟幀的口連接同一個(gè)地檢口測試,且下載的是相同程序。錯(cuò)口打固定幀256字節(jié)時(shí)在VIVADO上抓信號看到收到了超短幀和錯(cuò)幀。且?guī)^出錯(cuò)。
2、測試場景一:24口的BANK及接插件分配情況
框內(nèi)的為一個(gè)BANK,一條橫線上的為一個(gè)接插件上的
測試情況:打接口回環(huán),X1 AB,X2 AB,X3 AB正常收發(fā),X1CD,X2 CD,X3 CD有丟幀。
3、測試場景二:12口的BANK及接插件分配情況
測試情況:打接口回環(huán)。此時(shí)的X1 AB和 X1 CD現(xiàn)象與上面的24口情況相同(約束方法相同,X1 CD有丟幀現(xiàn)象。但之前測試12口的時(shí)候無誤)。但此時(shí)X3 CD正常接收。(注意到此時(shí)的X3 CD和24口測試程序的約束方法不同,此時(shí)X3 CD有兩個(gè)主核,有兩個(gè)從核,初步懷疑是一個(gè)主核帶不起三個(gè)從核或是一個(gè)bank到集插件上的時(shí)鐘走線有問題。)
4、測試場景三:測試版BANK及接插件分配情況
測試情況:打接口回環(huán)。此時(shí)的X1 AB上的數(shù)據(jù)1,2正常,數(shù)據(jù)3,4丟幀,X1 CD上的數(shù)據(jù)5,6丟幀,數(shù)據(jù)7,8正常??梢园l(fā)現(xiàn)正常的數(shù)據(jù)口都有一個(gè)主核,一個(gè)從核。而丟幀的數(shù)據(jù)口只有從核。
分析:此時(shí)可以排除是硬件問題,因?yàn)闇y試情況一、二時(shí),X1 AB可正常收發(fā)數(shù)據(jù)。然而換成測試三的約束條件,發(fā)現(xiàn)有兩個(gè)口也丟幀。
解決思路
經(jīng)過上面的三種方案驗(yàn)證,懷疑是從核不能獨(dú)立工作。于是查閱GTX手冊,看到GTX的外部時(shí)鐘使用模式如下圖:
GTXE2_CHANNEL/ GTHE2_CHANNEL必須為每個(gè)收發(fā)器實(shí)例化原語。如果需要高性能QPLL時(shí),必須實(shí)例化GTXE2_COMMON/GTHE2_COMMON原語。若速率要求不高,則可以每個(gè)通道用CPLL.用QPLL時(shí),每個(gè)QUAD塊上若用多個(gè)GTX接口,則需要有主從之分。
用QPLL時(shí)參考時(shí)鐘經(jīng)過IBUFDS_GTE2原語輸出到GTXE2_COMMON/GTHE2_COMMON原語。
GTXE2_COMMON/GTHE2_COMMON原語產(chǎn)生的時(shí)鐘再供給其他channel.由于一個(gè)QUAD塊上只能有一個(gè)GTXE2_COMMON/GTHE2_COMMON,所以再用QPLL時(shí)一個(gè)QUAD塊上有主從之分。
為了解決這次調(diào)試時(shí)出現(xiàn)的從核不能獨(dú)立工作的現(xiàn)象,采用CPLL的方式,每個(gè)channel都有CPLL,所以每個(gè)核都是一樣的,沒有主從之分,問題解決。每個(gè)核都接的是參考時(shí)鐘經(jīng)過IBUFDS_GTE2原語輸出的單端參考時(shí)鐘。程序中把GTXE2_COMMON/GTHE2_COMMON原語注釋掉,把輸入到核的GTXE2_COMMON/GTHE2_COMMON的輸出接零就好,如下圖:
基礎(chǔ)知識
以下來源于網(wǎng)絡(luò):
Xilinx的7系列FPGA隨著集成度的提高,其高速串行收發(fā)器不再獨(dú)占一個(gè)單獨(dú)的參考時(shí)鐘,而是以Quad來對串行高速收發(fā)器進(jìn)行分組,四個(gè)串行高速收發(fā)器和一個(gè)COMMOM(QPLL)組成一個(gè)Quad,每一個(gè)串行高速收發(fā)器稱為一個(gè)Channel。
QPLL和CPLL的區(qū)別,在于兩者支持的線速率不同,對于CPLL來說,支持的線速率位1.6GHz到3.3GHZ之間,而對于QPLL來說,GTX支持的線速率分兩檔,Lower Baud支持5.93GHz~8.0GHz,Upper Baud支持9.8GHz~12.5GHz,對于GTH則不分檔位,支持的線速率為8.0GHz~13.1GHz。
Xilinx的7系列FPGA根據(jù)不同的器件類型,集成了GTP、GTX、GTH以及GTZ四種串行高速收發(fā)器,四種收發(fā)器主要區(qū)別是支持的線速率不同,下圖可以說明在7系列里面器件類型和支持的收發(fā)器類型以及最大的收發(fā)器數(shù)量。
Xilinx的7系列FPGA隨著集成度的提高,其高速串行收發(fā)器不再獨(dú)占一個(gè)單獨(dú)的參考時(shí)鐘,而是以Quad來對串行高速收發(fā)器進(jìn)行分組,四個(gè)串行高速收發(fā)器和一個(gè)COMMOM(QPLL)組成一個(gè)Quad,每一個(gè)串行高速收發(fā)器稱為一個(gè)Channel,以XC7K325T為例,GTX在FPGA內(nèi)部如下圖所示:
對于每一個(gè)串行高速收發(fā)器,其包含了發(fā)送部分和接收部分,內(nèi)部結(jié)構(gòu)如下圖:
發(fā)送端和接收端功能獨(dú)立,均由PMA(Physical Media Attachment,物理媒介適配層)和PCS(Physical Coding Sublayer,物理編碼子層)兩個(gè)子層組成。其中PMA子層包含高速串并轉(zhuǎn)換(Serdes)、預(yù)/后加重、接收均衡、時(shí)鐘發(fā)生器及時(shí)鐘恢復(fù)等電路。PCS子層包含8B/10B編解碼、緩沖區(qū)、通道綁定和時(shí)鐘修正等電路。
GTX發(fā)送端處理流程:首先用戶邏輯數(shù)據(jù)經(jīng)過8B/10B編碼后,進(jìn)入一個(gè)發(fā)送緩存區(qū),該緩沖區(qū)主要是PMA子層和PCS子層兩個(gè)時(shí)鐘域的時(shí)鐘隔離,解決兩者時(shí)鐘速率匹配和相位差異的問題,最后經(jīng)過高速Serdes進(jìn)行并串轉(zhuǎn)換,有必要的話,可以進(jìn)行預(yù)加重、后加重。值得一提的是,如果在PCB設(shè)計(jì)時(shí)不慎將TXP和TXN差分引腳交叉連接,則可以通過極性控制來彌補(bǔ)這個(gè)設(shè)計(jì)錯(cuò)誤。接收端和發(fā)送端過程相反,相似點(diǎn)較多,這里就不贅述了,需要注意的是RX接收端的彈性緩沖區(qū),其具有時(shí)鐘糾正和通道綁定功能。
上面是GTX的性能和結(jié)構(gòu)功能概述,下面詳細(xì)分析GTX的時(shí)鐘結(jié)構(gòu)。
以7系列的GTX來說,每個(gè)Quad有兩個(gè)外部差分參考時(shí)鐘源,其中一個(gè)Quad的時(shí)鐘結(jié)構(gòu)如下圖所示:
紅色方框部分是兩個(gè)差分參考時(shí)鐘輸入,每個(gè)外部參考時(shí)鐘的輸入必須經(jīng)過IBUFDS_GTE2源語之后才能使用。綠色方框是來自其他Quad的參考時(shí)鐘輸入,7系列FPGA支持使用相鄰(南北方向)Quad的參考時(shí)鐘作為當(dāng)前Quad的參考時(shí)鐘,多路參考時(shí)鐘源經(jīng)過一個(gè)選擇器之后,分兩路進(jìn)入QPLL和CPLL,如圖五和圖六,其中藍(lán)色方框是QPLL,黃色方框是CPLL,對于一個(gè)GTX Channel來說,可以獨(dú)立選擇參考時(shí)鐘,可以選擇QPLL,也可以選擇CPLL,QPLL和CPLL的區(qū)別在于兩者支持的線速率不同,QPLL支持的線速率高于CPLL,圖七是外部參考時(shí)鐘模型的詳細(xì)結(jié)構(gòu),紅色箭頭表示QPLL通路,黃色箭頭表示CPLL通路。
因?yàn)槊恳粋€(gè)Quad有兩個(gè)外部參考時(shí)鐘,因此對于每一個(gè)Quad來說,可以選擇兩個(gè)不同的參考時(shí)鐘,每一個(gè)CHANNEL的接收端和發(fā)送端都可以獨(dú)立選擇參考時(shí)鐘,如下圖所示:
如果用戶需要使用其他Quad的參考時(shí)鐘源來作為當(dāng)前Quad的參考時(shí)鐘,在滿足下面三個(gè)條件的情況下可以使用:
1、只能使用當(dāng)前Quad上方的Quad的參考時(shí)鐘;
2、只能使用當(dāng)前Quad下方的Quad的參考時(shí)鐘;
3、一個(gè)Quad的參考時(shí)鐘源不能驅(qū)動(dòng)超過3個(gè)Quad的收發(fā)器(只能驅(qū)動(dòng)當(dāng)前Quad和上下方相鄰兩個(gè)Quad);
滿足上面的條件,就可以把其他Quad的參考時(shí)鐘配置成當(dāng)前Quad的參考時(shí)鐘,如下圖所示,注意圖中紅色方框表示相鄰的Quad:
QPLL和CPLL的區(qū)別,在于兩者支持的線速率不同,對于CPLL來說,支持的線速率位1.6GHz到3.3GHZ之間,而對于QPLL來說,GTX支持的線速率分兩檔,Lower Baud支持5.93GHz~8.0GHz,Upper Baud支持9.8GHz~12.5GHz,對于GTH則不分檔位,支持的線速率為8.0GHz~13.1GHz。當(dāng)以高于CPLL操作范圍的線路速率操作通道時(shí),需要使用QPLL。GTXE2_COMMON原語封裝了當(dāng)使用GTX QPLL時(shí),必須實(shí)例化GTX QPLL。
全文完。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。