1概述
Xilinx 7系列FPGA全系所支持的GT,GT資源是Xilinx系列FPGA的重要賣點(diǎn),也是做高速接口的基礎(chǔ),GT的意思是Gigabyte Transceiver,G比特收發(fā)器。不管是PCIE、SATA、MAC等,都需要用到GT資源來做數(shù)據(jù)高速串化和解串處理,Xilinx不同的FPGA系列擁有不同的GT資源類型,低端的A7由GTP,K7有GTX,V7有GTH,GTZ被用于少數(shù)V7系列,更高端的U+系列還有GTY等,他們的速度越來越高,應(yīng)用場(chǎng)景也越來越高端。。。
7系列FPGA GTX和GTH收發(fā)器是功率高效的收發(fā)器,GTX收發(fā)器支持500 Mb/s至12.5 Gb/s的線路速率,GTH收發(fā)器支持13.1 Gb/s的線路速度。GTX/GTH收發(fā)器具有高度可配置性,并與FPGA的可編程邏輯資源緊密集成。
高速收發(fā)器性能對(duì)比
2 GTX/GTH收發(fā)器支持以下使用模式
關(guān)于GTX介紹最詳細(xì)的肯定是Xilinx官方的《ug476_7Series_Transceivers》 以此來解讀GTX:
GTX/GTH收發(fā)器支持以下使用模式:
? PCI Express, Revision 1.1/2.0/3.0
? 10GBASE-R
? Interlaken
? 10 Gb Attachment Unit Interface (XAUI), Reduced Pin eXtended Attachment Unit
Interface (RXAUI), 100 Gb Attachment Unit Interface (CAUI), 40 Gb Attachment Unit
Interface (XLAUI)
? Common Packet Radio Interface (CPRI?)/Open Base Station Architecture Initiative
(OBSAI)
? OC-48/192
? OTU-1, OTU-2, OTU-3, OTU-4
? Serial RapidIO (SRIO)
? Serial Advanced Technology Attachment (SATA)/Serial Attached SCSI (SAS)
? Serial Digital Interface (SDI)
? SFF-8431 (SFP+)
3 GTX內(nèi)部基本結(jié)構(gòu)
如下圖所示,Xilinx以Quad來對(duì)串行高速收發(fā)器進(jìn)行分組,四個(gè)串行高速收發(fā)器(GTXE2_CHANNEL)和一個(gè) GTXE2_COMMOM組成一個(gè) Quad,每一個(gè)串行高速收發(fā)器稱為一個(gè) Channel(通道)。
一個(gè)QUAD的內(nèi)部結(jié)構(gòu)如下圖所示,由四個(gè)GTXE2_CHANNEL 原語和一個(gè)GTXE2_COMMON原語組成。
GTXE2_COMMON原語包含一個(gè)LC-tank PLL(QPLL)。
每一個(gè)GTXE2_CHANNEL 原語包含一個(gè)TX,一個(gè)RX和一個(gè)CPLL。
下圖為GTXE2_CHANNEL原語內(nèi)部結(jié)構(gòu)。
GTXE2_CHANNEL 的發(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í)鐘修正等電路。
從上圖中可以看到單個(gè) Channel 由發(fā)送接口和接收接口組成,每個(gè)接口又分為兩部分結(jié)構(gòu),這兩部分結(jié)構(gòu)分別是 PMA 和 PCS。PMA 和 PCS 內(nèi)部又由許多功能模塊構(gòu)成。
3.1 8b10b編解碼
通常說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ì)量有問題。8b10b最大的劣勢(shì)是效率比較低,有20%的額外開銷,所以常用于低于8G的場(chǎng)景,最常見的、使用8b10b、同時(shí)又高于8G線速率的似乎是CPRI Rate7,線速率9.8G左右。除了8b10b之外,還有其他很多編碼方式,比如64b66b。
3.2 PRBS
PRBS是偽隨機(jī)序列碼,GTX自帶了PRBS的生成器(在TX內(nèi)部)和PRBS接收/檢查模塊(在RX內(nèi)部)。ibert中的誤碼率檢查就是基于內(nèi)置的PRBS模塊。
從結(jié)構(gòu)圖可以看到,PRBS和8b10b沒有項(xiàng)目連接的直接關(guān)系,所以ibert的測(cè)試中沒有使用8b10b編碼(也沒有使用其他編碼)。同時(shí)內(nèi)部的PRBS也不支持使用其他編碼。所以如果想在GTX外部使用PRBS信號(hào)源,可以另外單獨(dú)做PRBS的生成器和校驗(yàn)?zāi)K。Xilinx似乎是有相關(guān)參考設(shè)計(jì)的。
3.3 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。
QPLL時(shí)鐘源結(jié)構(gòu)圖
CPLL源時(shí)鐘結(jié)構(gòu)圖
從底層角度看,由于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可以超過10G(具體數(shù)值要根據(jù)器件的速度等級(jí)來查詢DataSheet)。
即使QPLL工作在很高的線速率下,Channel也可以工作在較低的線速率下。具體的實(shí)現(xiàn)方案就是
使用Channel自帶的CPLL而不用QPLL;
2.Channel可以將QPLL的速率按2的倍數(shù)進(jìn)行降低;這樣同一個(gè)參考時(shí)鐘下,一個(gè)Quad的不同GTX有機(jī)會(huì)跑在不同的線速率下。當(dāng)然這一需求需要更多的操作,IP本身無法實(shí)現(xiàn)。