文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.190593
中文引用格式: 吳劍簫,,王鵬,,吳濤,等. 基于SPCB的處理器直連低延時PCS的設計實現(xiàn)[J].電子技術應用,,2019,,45(9):65-70,76.
英文引用格式: Wu Jianxiao,,Wang Peng,,Wu Tao,et al. Design and implementation of SPCB-based processor directly connected low delay PCS[J]. Application of Electronic Technique,,2019,,45(9):65-70,76.
0 引言
SERDES(串行解串)是指將數(shù)據(jù)通過高速串行信號進行差分傳輸,并在接收端恢復的過程[1],。它具有速率高,、功耗低和抗干擾能力強等特點,已廣泛應用于計算機和通信領域,。SERDES系統(tǒng)由實現(xiàn)串行與解串的物理介質連接子層(PMA)和負責數(shù)據(jù)流編解碼的物理編碼子層(PCS)組成[2],。PMA主要由模擬電路構成,,延時較低,,一般在6~7 ns以內;PCS則由數(shù)字電路構成,,實現(xiàn)編解碼,、加解擾和多路對齊等功能,延時較大,,通常為幾十納秒,。當前的芯片直連應用場景要求傳輸延時最好控制在20 ns以內。以處理器的直連接口為例,,Intel QPI(QuickPath Interconnect)與AMD HT(HyperTransport)的傳輸延時均小于20 ns[3-4],。PCI-SIG推出的CCIX延時也小于30 ns。但QPI和HT通常適用X86架構的芯片互連,,CCIX則有PCIe標準兼容性要求,,給國產(chǎn)芯片,尤其是CPU應用帶來不便,。另外購買相關IP授權也對芯片的國產(chǎn)自主可控帶來隱患,。因此如何降低SERDES系統(tǒng)延時,進而滿足國產(chǎn)芯片直連應用,,是本文重點討論的問題,。
本文介紹基于同源相位補償緩沖(SPCB)的低延時、超高速PCS的設計與實現(xiàn),,其單向帶寬可達N×32 Gb/s(N為可配置物理通道數(shù)),,收發(fā)延時為9~11 ns,加上PMA部分6 s延時,,整個SERDES系統(tǒng)傳輸延時可控制在17 ns以內,,能夠滿足芯片直連等應用場景需求。
1 原理介紹
1.1 SERDES系統(tǒng)的PCS
傳統(tǒng)SERDES系統(tǒng)的PCS層由發(fā)送通道與接收通道組成:編碼,、加擾,、速率匹配和跨時鐘域模塊構成發(fā)送通道,;解碼、解擾,、速率匹配,、跨時鐘域和彈性緩沖模塊構成接收通道[5]。另外,,為了適配多通道傳輸,,高速SERDES系統(tǒng)常需要在發(fā)送端和接收端設置數(shù)據(jù)分塊與塊重建模塊。
PCS層中各個模塊的功能如下:
(1)編解碼模塊:編碼模塊將數(shù)據(jù)進行編碼,,并在編碼后的數(shù)據(jù)流中加入用于定界的有效同步位,。解碼模塊根據(jù)有效同步位對數(shù)據(jù)塊進行對齊,并對數(shù)據(jù)進行解碼,,恢復為原始數(shù)據(jù),。
(2)加解擾模塊:利用本征多項式對數(shù)據(jù)進行編解碼,使數(shù)據(jù)隨機化,,減少了數(shù)據(jù)中連續(xù)的“0”和“1”的個數(shù),,避免差分接口上的信號長期不跳轉,影響時鐘恢復而導致誤碼,。
(3)發(fā)送/接收端速率匹配模塊:為了確保PMA側傳入和傳出的數(shù)據(jù)位寬與接口位寬相一致,,需要使用速率匹配模塊進行位寬轉換。
(4)彈性緩沖模塊:用于補償本地接收側與對端發(fā)送側的異步時鐘頻率差異,。通過頻率的補償實現(xiàn)相位同步,保證數(shù)據(jù)傳輸穩(wěn)定可靠,。
(5)數(shù)據(jù)分塊與塊重建模塊:根據(jù)系統(tǒng)當前的工作狀態(tài),將發(fā)送的數(shù)據(jù)進行分塊放入不同的通道中,,并在接收端進行數(shù)據(jù)的合并與恢復,。
SERDES系統(tǒng)PCS層的原理圖如圖1所示。
1.2 PCS層設計的優(yōu)化
根據(jù)處理器直連應用場景的特點,,對PCS設計進行了以下延時優(yōu)化:
(1)刪除彈性緩沖模塊,。彈性緩沖模塊利用類異步FIFO的方法來補償本地時鐘與恢復時鐘的頻率差異。其數(shù)據(jù)傳輸延時與緩沖深度有關,,一般在10個時鐘周期以上,。由于在一個機箱甚至PCB上多顆CPU可采用同源參考時鐘,即不存在參考時鐘頻差,,故可去除此模塊,。
(2)編解碼采用32B/34B編碼。由于PMA的數(shù)據(jù)位寬是32 bit,,若采用傳統(tǒng)的64B/66B進行編碼,,則需要兩拍數(shù)據(jù)才能進行一次編碼。這會帶來額外一個時鐘周期的數(shù)據(jù)傳輸延時。
(3)采用自研的SPCB進行跨時鐘域處理,?;谔幚砥髦边B場景,PMA各路發(fā)送/接收時鐘同源不同相,,故需要進行跨時鐘域處理,。傳統(tǒng)的異步FIFO則會帶來至少5~6個時鐘周期的延遲。這里專門設計了SPCB進一步壓縮延時,。
優(yōu)化后整個PCS層的結構框圖如圖2所示,。
該PCS可配置在多通路模式下工作,支持自動或手動切除故障通路,,單路單向帶寬可支持到32 Gb/s,,在該速率下整個PCS層的延時約為9~11 ns。同時PCS還支持數(shù)據(jù)通路翻轉,、遠端/近端自環(huán),、BIST測試等多種工作模式。目前PCS已應用于國產(chǎn)處理器芯片的直連接口,。
2 同源相位補償緩沖(SPCB)的工作原理
由于PCS與PMA側時鐘不同,,需進行跨時鐘域處理,。在進行高速數(shù)據(jù)傳輸時,,常用的跨時鐘域操作往往會帶來較大的延時[6]??紤]到發(fā)送端與接收端的時鐘是同源時鐘這一應用背景,,為進一步提高效率,壓縮延時,,本設計對傳統(tǒng)跨時鐘域的方案進行了改進,。使用同源相位補償緩沖(SPCB),大大縮短了跨時鐘域的延時,。
在高速SERDES系統(tǒng)中,,傳統(tǒng)的跨時鐘域方案是使用異步FIFO,利用讀寫指針和空滿狀態(tài)進行工作[7],,數(shù)據(jù)傳輸延遲約為5~6個時鐘周期,。若在PCS的發(fā)送側與接收側均采用其進行跨時鐘域操作,則異步交接部分延時就達10~12個時鐘周期,,很難滿足設計低延時需求,。
考慮到處理器直連接口發(fā)送端與接收端可采用同源時鐘的特點,設計了同源相位補償緩沖,,通過控制讀寫路徑中延時單元的個數(shù)實現(xiàn)對緩沖讀寫操作間隔的精準控制,。設計中將同源不同相的時鐘進行相位補償,從而實現(xiàn)跨時鐘域操作。其結構如圖3所示,。
該結構具體工作原理為:當控制信號有效時,,分別通過兩條由多個延時單元組成的邏輯鏈產(chǎn)生讀寫信號,直接控制Buffer的讀寫,。由于發(fā)送端與接收端的PMA用的是同源參考時鐘,,因此數(shù)據(jù)讀寫的頻率完全相同,讀寫指針更新的速率也一致,,Buffer中數(shù)據(jù)個數(shù)將維持一個定值,。因此整個buffer既不會寫滿也不會讀空,能夠持續(xù)正常工作,。通過配置兩條邏輯鏈之間延時單元個數(shù),,可以實現(xiàn)對讀寫使能信號間距的控制,從而控制數(shù)據(jù)讀寫的延時,。通過利用SPCB,,可以將讀寫延遲縮短至1~2個時鐘周期。
SPCB的狀態(tài)工作流程如圖4所示,,共計8個狀態(tài),。
(1)狀態(tài)1:空閑狀態(tài)。狀態(tài)機在未傳輸或傳輸完成后處于空閑狀態(tài),。清零并關閉計數(shù)器,。等待數(shù)據(jù)傳輸開始的start信號,進行狀態(tài)跳轉,。
(2)狀態(tài)2:初始化狀態(tài),。在收到了start信號后,在數(shù)據(jù)傳輸開始之前對同源相位補償緩沖進行初始化,。置低讀寫使能信號,,清空buffer中的數(shù)據(jù),同時打開計數(shù)器并清空傳輸完成狀態(tài)信號,。
(3)狀態(tài)3:寫狀態(tài),。初始化后,經(jīng)過TX_DLY_CNT個時鐘周期,,寫使能置高,。更新寫數(shù)據(jù)和寫指針,向buffer中寫入數(shù)據(jù),。
(4)狀態(tài)4:讀寫狀態(tài),。初始化后,經(jīng)過RX_DLY_CNT個時鐘周期,,讀使能也被置高,。開始更新讀數(shù)據(jù)和讀指針,,在寫入數(shù)據(jù)的同時讀出數(shù)據(jù)。
(5)狀態(tài)5:傳輸結束狀態(tài),。在讀寫狀態(tài)下檢測到start信號變?yōu)?時,,進入該狀態(tài)。清零計數(shù)器time_cnt的值,,從而實現(xiàn)對讀寫使能信號的關閉控制,。
(6)狀態(tài)6:讀狀態(tài)。傳輸結束狀態(tài)后,,經(jīng)過TX_DLY_CNT個時鐘周期,,寫使能置低。停止向buffer中寫入數(shù)據(jù),,讀使能依舊為高,。繼續(xù)進行剩余數(shù)據(jù)的讀出。
(7)狀態(tài)7:傳輸完成狀態(tài),。傳輸結束狀態(tài)后,,經(jīng)過RX_DLY_CNT個時鐘周期,讀使能置低,。此時buffer中的所有數(shù)據(jù)均已讀出,,不再進行數(shù)據(jù)讀取。同時置高傳輸完成狀態(tài)信號,。
(8)狀態(tài)8:停止狀態(tài),。該狀態(tài)在正常數(shù)據(jù)傳輸基本不會出現(xiàn)。若是由start信號異常導致在初始化狀態(tài)檢測到start信號變低進入該狀態(tài),,則跳轉到空閑狀態(tài),。若因發(fā)送數(shù)據(jù)較短(小于3個),,在寫狀態(tài)檢測到start信號為0,,則進入讀狀態(tài),將寫的數(shù)據(jù)讀出,。
其行為圖與對應的時序圖分別如圖5,、圖6所示。
在圖6中,,寫時鐘tx_clk與讀時鐘rx_clk是同源不同相的兩個時鐘,,通過利用SPCB,與寫時鐘對齊的數(shù)據(jù)wdata轉變?yōu)榱伺c讀時鐘對齊的數(shù)據(jù)rdata,,實現(xiàn)了跨時鐘域的操作,。
利用同源相位補償緩沖,可以通過配置邏輯鏈之間延時單元個數(shù)的差值,,實現(xiàn)對讀寫使能信號間距的控制,。圖5中,,邏輯路徑1和邏輯路徑2上的延時單元個數(shù)分別為2和4,讀寫數(shù)據(jù)傳輸延遲為2個時鐘周期,。SPCB可以將跨時鐘域延時由原先的5~6個時鐘周期縮短至1~2個時鐘周期,。在PCS的發(fā)送與接收端均采用SPCB,可將整個SERDES系統(tǒng)的傳輸延時降低6~10 ns(32 Gb/s通信速率下),。目前同源相位補償緩沖這一設計已申請專利[8],。
3 延時檢測
3.1 數(shù)字設計的理論延時
通過對設計的PCS進一步的分析,各個模塊的延時如表1,、表2所示,。
可以看出,該PCS的理論延遲為9~11個時鐘周期,,并且在絕大多數(shù)情況下其延時在10個時鐘周期之內,。對應數(shù)學期望值為9.12拍。即32 Gb/s的傳輸速率下,,對應的絕對延時為9.12 ns,。
3.2 仿真延時的檢測
通過觀察波形,計算發(fā)送端發(fā)送到第一個數(shù)據(jù)到接收端接收到第一個數(shù)據(jù)的時間差可以確定整個系統(tǒng)數(shù)據(jù)通路的延時,。通過圖7,、圖8可以看出此時發(fā)送端延時為4~5時鐘周期,接收端延時為5~6個時鐘周期,,整個系統(tǒng)的數(shù)據(jù)延時為9~11個時鐘周期,,與理論值相符。
3.3 實際延時的測試
為了進一步檢測該PCS的實際數(shù)據(jù)傳輸延時,,本文參照相關文獻[9-12],,利用FPGA進行測試。
本次測試選用了Xilinx公司的基于Xilinx kintex-7 FPGA的XC7K325T-IMG開發(fā)板,,使用兩塊開發(fā)板上的GTX(Gigabit Transceiver,,吉比特收發(fā)器)接口將各自發(fā)送端經(jīng)過發(fā)送路徑的數(shù)據(jù)連接到另一塊FPGA的接收端,分別通過板上的SPI接口[13]與PC進行通信,,實現(xiàn)對整個系統(tǒng)的控制,。其結構圖如圖9所示。
在進行測試延時之前,,首先應解決以下兩個問題:首先整個PCS的數(shù)據(jù)傳輸延時是納秒級的,,而SPI模塊的讀寫時鐘頻率一般只有幾十兆,無法實現(xiàn)延時的實時讀取;其次利用FPGA測得的傳輸延時不僅包含了PCS延時,,還包含了PMA延時,、線纜延時以及FPGA上的門電路延時等其他延時,會對最終的測試結果造成影響,。
針對以上兩個問題,,設計了一種利用FPGA對PCS進行延時的方案,。該方案的主要原理如下:
通過利用多個延時的總時間和延時的個數(shù)來求出平均延時。傳輸延時是發(fā)送端發(fā)送數(shù)據(jù)與接收端受到數(shù)據(jù)的時間差,??紤]到數(shù)據(jù)接收端在接收到數(shù)據(jù)后rx_valid信號才會置高以及發(fā)送端只有在tx_valid信號為高時才會發(fā)送數(shù)據(jù),設計了以下系統(tǒng)延時測試方法:
配置發(fā)送端發(fā)送隨機數(shù)據(jù)包,,在數(shù)據(jù)開始發(fā)送時,,tx_valid信號由低變高。當接收端收到數(shù)據(jù)后,,rx_valid信號變高,,在下一個時鐘周期置低tx_valid信號。即之后的數(shù)據(jù)不會被傳輸,,經(jīng)過一段時間后rx_valid信號也會變低,。然后再開啟tx_valid。當rx_valid變高后再關閉tx_valid,,以此類推,。工作流程如圖10所示。
設整個系統(tǒng)延時為t個時鐘周期,,通過上圖可以看出,,rx_valid信號的一次翻轉對應著(t+1)個時鐘周期。而1個時鐘周期對應一拍32 bit的數(shù)據(jù)傳輸,。所以32 Gb/s速率下系統(tǒng)延時t(ns),,rx_valid變高次數(shù)j,程序運行時間T(s)與時鐘頻率f(GHz)滿足以下關系:
故可通過寄存器記錄rx_valid由低變高的次數(shù),,結合程序運行時間和數(shù)據(jù)傳輸頻率,,求出系統(tǒng)延時。
該方法測試的延時是包含了PMA延時,、線纜延時以及FPGA上的門電路延時等其他延時的整個系統(tǒng)延時,。考慮到PMA延時基本為一定值,,而其他的延時基本是elmore延時,,大小僅取決于電路中的電阻和電感,與頻率無關,。故可通過測試在兩個不同頻率下的系統(tǒng)延時,得出PCS層的延時,。
設32 Gb/s速率下系統(tǒng)pcs的延時為tp(ns),,其他延時為to(ns),則式(7)可表達為:
從而求得系統(tǒng)中PCS部分延時tp,。同時由于開發(fā)板上的GTX也是由PCS和PMA組成的,,因此該設計的實際延時應再減去GTX的PCS延遲,,此延遲經(jīng)仿真實測約為15個周期左右。在32 Gb/s的傳輸速率下對應物理延時為15 ns,。
在本次測試中選取f1=2.5 GHz,,f2=2 GHz,T=60 s,,分別測量j1和j2的多次平均值,,測量結果如表3所示。
通過方程組(3)可求出tp=24.48 ns,。即32 Gb/s速率下PCS的總延時為24.48 ns,,去除GTX的PCS延時15 ns,整個設計的PCS延時為9.48 ns,,與理論計算值9.12 ns的誤差約為3.95%,,可認為是測量誤差。
4 結論
以SERDES為代表的高速串行接口技術代表了當今數(shù)據(jù)傳輸技術的發(fā)展趨勢,。如何進一步壓縮PCS傳輸延遲是SERDES技術發(fā)展所需解決的迫切難題,。本文在SERDES技術的基礎上,通過利用自研相位自適應緩沖(SPCB),,實現(xiàn)了一個低延時超高速PCS,。分析探討了系統(tǒng)結構中各個模塊的功能實現(xiàn),并針對CPU直連這一應用場景對部分模塊進行優(yōu)化,。還對其延時從理論,、仿真與FPGA實測3個方面進行了分析。相比傳統(tǒng)的PCS方案,,本系統(tǒng)數(shù)據(jù)傳輸延時小,,在32 Gb/s的通信速率下僅為10 ns左右,可應用于處理器直連以及2.5D/3D封裝die互連等高速通信場景,。該研究成果目前已應用于國產(chǎn)處理器直連接口,,為國產(chǎn)裝備自主可控提供了有力支撐。
參考文獻
[1] 陳東旭.面向2.5G SerDes的8b/10b編解碼電路設計與測試[D].成都:電子科技大學,,2015.
[2] AISWARYA A S,,GEORGE A.Fixed latency serial transceiver with single bit error correction on FPGA[A].2017 International Conference on Trends in Electronics and Informatics(ICEI)[C].Tirunelveli,2017:902-907.
[3] ANDERSON D,,TRODDEN J.Hypertransport system architecture[M].Addison-Wesley Professional,,2003:30-32.
[4] ZIAKAS D,BAUM A,,MADDOX R A,,et al.Intel quickpath interconnect architectural features supporting scalable system architectures[A].2010 18th IEEE Symposium on High Performance Interconnects.IEEE[C].New York,2010:1-6.
[5] 王偉濤.8b/10b架構SerDes芯片的設計與實現(xiàn)[D].成都:電子科技大學,,2016.
[6] 王菲,,張莎莎,,王茜.信號跨時鐘域問題分析及驗證方法研究[J].電子技術應用,2017,,43(1):43-45,,49.
[7] 王小娟.基于FPGA的異步FIFO的設計[J].中國新通信,2016(23): 66.
[8] 吳濤.一種異步FIFO讀寫控制電路及方法[P].中國:201810628386.9,,2018.
[9] DEWEY M.Implementing digital interfaces with user programmable FPGAs[A].IEEE Autotestcon[C].IEEE Autotestcon Conference,,2017:60-164.
[10] ARORA S.SERDES external loopback test using production parametric-test hardware[A].International Test Conference Proceedings[C].47th IEEE International Test Conference,2016.
[11] 劉安,,禹衛(wèi)東,,馬小兵,等.基于FPGA的高速串行數(shù)據(jù)收發(fā)接口設計[J].電子技術應用,,2017,,43(6):48-51.
[12] 高虎,封二強,,趙剛.基于Testbench的FPGA實物自動化測試環(huán)境設計[J].電子技術應用,,2018,44(4):48-51.
[13] 王玨文,,金偉信,,蔡一兵,等.基于FPGA的SPI總線接口的實現(xiàn)[J].現(xiàn)代電子技術,,2010,,33(14):102-104.
作者信息:
吳劍簫1,王 鵬2,,吳 濤1,,高 鵬1,陳文濤3,,4
(1.中國科學院 上海高等研究院,,上海200120;2.上海大學 計算機工程與科學學院,,上海200444,;
3.上海芯來電子科技有限公司,上海201411,;4.數(shù)學工程與先進計算國家重點實驗室,,江蘇 無錫214125)