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