1概述
Xilinx 7系列FPGA全系所支持的GT,GT資源是Xilinx系列FPGA的重要賣點,也是做高速接口的基礎,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等,他們的速度越來越高,應用場景也越來越高端。。。
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ā)器性能對比
2 GTX/GTH收發(fā)器支持以下使用模式
關于GTX介紹最詳細的肯定是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內部基本結構
如下圖所示,Xilinx以Quad來對串行高速收發(fā)器進行分組,四個串行高速收發(fā)器(GTXE2_CHANNEL)和一個 GTXE2_COMMOM組成一個 Quad,每一個串行高速收發(fā)器稱為一個 Channel(通道)。
一個QUAD的內部結構如下圖所示,由四個GTXE2_CHANNEL 原語和一個GTXE2_COMMON原語組成。
GTXE2_COMMON原語包含一個LC-tank PLL(QPLL)。
每一個GTXE2_CHANNEL 原語包含一個TX,一個RX和一個CPLL。
下圖為GTXE2_CHANNEL原語內部結構。
GTXE2_CHANNEL 的發(fā)送端和接收端功能是獨立的,均由 PMA(Physical Media Attachment,物理媒介適配層)和 PCS(Physical Coding Sublayer,物理編碼子層)兩個子層組成。其中 PMA 子層包含高速串并轉換(Serdes)、預/后加重、接收均衡、時鐘發(fā)生器及時鐘恢復等電路。PCS 子層包含8B/10B 編解碼、緩沖區(qū)、通道綁定和時鐘修正等電路。
從上圖中可以看到單個 Channel 由發(fā)送接口和接收接口組成,每個接口又分為兩部分結構,這兩部分結構分別是 PMA 和 PCS。PMA 和 PCS 內部又由許多功能模塊構成。
3.1 8b10b編解碼
通常說8b10b是一個編碼方式。在這里還指GTX PCS中的一個模塊。
作為編碼,8b10b有平衡電平,防止連續(xù)1/0的功能。編碼分為正負碼和特殊K碼。最常用的K碼應該是k28.5。8b10b最大的優(yōu)勢在于自帶錯誤檢測。當出現(xiàn)8b10b錯誤的時候,大概率是鏈路質量有問題。8b10b最大的劣勢是效率比較低,有20%的額外開銷,所以常用于低于8G的場景,最常見的、使用8b10b、同時又高于8G線速率的似乎是CPRI Rate7,線速率9.8G左右。除了8b10b之外,還有其他很多編碼方式,比如64b66b。
3.2 PRBS
PRBS是偽隨機序列碼,GTX自帶了PRBS的生成器(在TX內部)和PRBS接收/檢查模塊(在RX內部)。ibert中的誤碼率檢查就是基于內置的PRBS模塊。
從結構圖可以看到,PRBS和8b10b沒有項目連接的直接關系,所以ibert的測試中沒有使用8b10b編碼(也沒有使用其他編碼)。同時內部的PRBS也不支持使用其他編碼。所以如果想在GTX外部使用PRBS信號源,可以另外單獨做PRBS的生成器和校驗模塊。Xilinx似乎是有相關參考設計的。
3.3 QPLL和CPLL
已經知道四個GTX為一組,稱呼為Quad,每個GTX稱呼為Channel,就很容易理解QPLL和CPLL了。QPLL是一個Quad共用的PLL,GTX一個Quad只有一個QPLL。CPLL是每個Channel獨有的PLL。
QPLL時鐘源結構圖
CPLL源時鐘結構圖
從底層角度看,由于CPLL是每個Channel獨有的,所以CPLL的所有接口都在Channel這個底層模塊中。而QPLL是另外使用了一個叫common的底層模塊。
GTX中QPLL和CPLL,除了數(shù)目(一個Quad一個QPLL四個CPLL)和歸屬(QPLL屬于common,CPLL屬于Channel)不同之外,最大的不同在于支持的最高線速率頻率不同。CPLL最高只有6.xG,而QPLL可以超過10G(具體數(shù)值要根據(jù)器件的速度等級來查詢DataSheet)。
即使QPLL工作在很高的線速率下,Channel也可以工作在較低的線速率下。具體的實現(xiàn)方案就是
使用Channel自帶的CPLL而不用QPLL;
2.Channel可以將QPLL的速率按2的倍數(shù)進行降低;這樣同一個參考時鐘下,一個Quad的不同GTX有機會跑在不同的線速率下。當然這一需求需要更多的操作,IP本身無法實現(xiàn)。