文獻標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.190593
中文引用格式: 吳劍簫,王鵬,,吳濤,,等. 基于SPCB的處理器直連低延時PCS的設(shè)計實現(xiàn)[J].電子技術(shù)應(yīng)用,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ù)通過高速串行信號進行差分傳輸,,并在接收端恢復(fù)的過程[1]。它具有速率高,、功耗低和抗干擾能力強等特點,,已廣泛應(yīng)用于計算機和通信領(lǐng)域。SERDES系統(tǒng)由實現(xiàn)串行與解串的物理介質(zhì)連接子層(PMA)和負責(zé)數(shù)據(jù)流編解碼的物理編碼子層(PCS)組成[2],。PMA主要由模擬電路構(gòu)成,,延時較低,一般在6~7 ns以內(nèi),;PCS則由數(shù)字電路構(gòu)成,,實現(xiàn)編解碼、加解擾和多路對齊等功能,,延時較大,,通常為幾十納秒。當(dāng)前的芯片直連應(yīng)用場景要求傳輸延時最好控制在20 ns以內(nèi),。以處理器的直連接口為例,,Intel QPI(QuickPath Interconnect)與AMD HT(HyperTransport)的傳輸延時均小于20 ns[3-4]。PCI-SIG推出的CCIX延時也小于30 ns,。但QPI和HT通常適用X86架構(gòu)的芯片互連,,CCIX則有PCIe標(biāo)準兼容性要求,給國產(chǎn)芯片,,尤其是CPU應(yīng)用帶來不便,。另外購買相關(guān)IP授權(quán)也對芯片的國產(chǎn)自主可控帶來隱患,。因此如何降低SERDES系統(tǒng)延時,進而滿足國產(chǎn)芯片直連應(yīng)用,,是本文重點討論的問題。
本文介紹基于同源相位補償緩沖(SPCB)的低延時,、超高速PCS的設(shè)計與實現(xiàn),,其單向帶寬可達N×32 Gb/s(N為可配置物理通道數(shù)),收發(fā)延時為9~11 ns,,加上PMA部分6 s延時,,整個SERDES系統(tǒng)傳輸延時可控制在17 ns以內(nèi),能夠滿足芯片直連等應(yīng)用場景需求,。
1 原理介紹
1.1 SERDES系統(tǒng)的PCS
傳統(tǒng)SERDES系統(tǒng)的PCS層由發(fā)送通道與接收通道組成:編碼,、加擾、速率匹配和跨時鐘域模塊構(gòu)成發(fā)送通道,;解碼,、解擾、速率匹配,、跨時鐘域和彈性緩沖模塊構(gòu)成接收通道[5],。另外,為了適配多通道傳輸,,高速SERDES系統(tǒng)常需要在發(fā)送端和接收端設(shè)置數(shù)據(jù)分塊與塊重建模塊,。
PCS層中各個模塊的功能如下:
(1)編解碼模塊:編碼模塊將數(shù)據(jù)進行編碼,并在編碼后的數(shù)據(jù)流中加入用于定界的有效同步位,。解碼模塊根據(jù)有效同步位對數(shù)據(jù)塊進行對齊,,并對數(shù)據(jù)進行解碼,恢復(fù)為原始數(shù)據(jù),。
(2)加解擾模塊:利用本征多項式對數(shù)據(jù)進行編解碼,,使數(shù)據(jù)隨機化,減少了數(shù)據(jù)中連續(xù)的“0”和“1”的個數(shù),,避免差分接口上的信號長期不跳轉(zhuǎn),,影響時鐘恢復(fù)而導(dǎo)致誤碼。
(3)發(fā)送/接收端速率匹配模塊:為了確保PMA側(cè)傳入和傳出的數(shù)據(jù)位寬與接口位寬相一致,,需要使用速率匹配模塊進行位寬轉(zhuǎn)換,。
(4)彈性緩沖模塊:用于補償本地接收側(cè)與對端發(fā)送側(cè)的異步時鐘頻率差異。通過頻率的補償實現(xiàn)相位同步,保證數(shù)據(jù)傳輸穩(wěn)定可靠,。
(5)數(shù)據(jù)分塊與塊重建模塊:根據(jù)系統(tǒng)當(dāng)前的工作狀態(tài),,將發(fā)送的數(shù)據(jù)進行分塊放入不同的通道中,并在接收端進行數(shù)據(jù)的合并與恢復(fù),。
SERDES系統(tǒng)PCS層的原理圖如圖1所示,。
1.2 PCS層設(shè)計的優(yōu)化
根據(jù)處理器直連應(yīng)用場景的特點,,對PCS設(shè)計進行了以下延時優(yōu)化:
(1)刪除彈性緩沖模塊。彈性緩沖模塊利用類異步FIFO的方法來補償本地時鐘與恢復(fù)時鐘的頻率差異,。其數(shù)據(jù)傳輸延時與緩沖深度有關(guān),,一般在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個時鐘周期的延遲,。這里專門設(shè)計了SPCB進一步壓縮延時。
優(yōu)化后整個PCS層的結(jié)構(gòu)框圖如圖2所示,。
該PCS可配置在多通路模式下工作,,支持自動或手動切除故障通路,單路單向帶寬可支持到32 Gb/s,,在該速率下整個PCS層的延時約為9~11 ns,。同時PCS還支持數(shù)據(jù)通路翻轉(zhuǎn)、遠端/近端自環(huán),、BIST測試等多種工作模式,。目前PCS已應(yīng)用于國產(chǎn)處理器芯片的直連接口。
2 同源相位補償緩沖(SPCB)的工作原理
由于PCS與PMA側(cè)時鐘不同,,需進行跨時鐘域處理,。在進行高速數(shù)據(jù)傳輸時,常用的跨時鐘域操作往往會帶來較大的延時[6],??紤]到發(fā)送端與接收端的時鐘是同源時鐘這一應(yīng)用背景,為進一步提高效率,,壓縮延時,,本設(shè)計對傳統(tǒng)跨時鐘域的方案進行了改進。使用同源相位補償緩沖(SPCB),,大大縮短了跨時鐘域的延時,。
在高速SERDES系統(tǒng)中,,傳統(tǒng)的跨時鐘域方案是使用異步FIFO,利用讀寫指針和空滿狀態(tài)進行工作[7],,數(shù)據(jù)傳輸延遲約為5~6個時鐘周期,。若在PCS的發(fā)送側(cè)與接收側(cè)均采用其進行跨時鐘域操作,則異步交接部分延時就達10~12個時鐘周期,,很難滿足設(shè)計低延時需求,。
考慮到處理器直連接口發(fā)送端與接收端可采用同源時鐘的特點,設(shè)計了同源相位補償緩沖,,通過控制讀寫路徑中延時單元的個數(shù)實現(xiàn)對緩沖讀寫操作間隔的精準控制。設(shè)計中將同源不同相的時鐘進行相位補償,,從而實現(xiàn)跨時鐘域操作,。其結(jié)構(gòu)如圖3所示。
該結(jié)構(gòu)具體工作原理為:當(dāng)控制信號有效時,,分別通過兩條由多個延時單元組成的邏輯鏈產(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)。清零并關(guān)閉計數(shù)器,。等待數(shù)據(jù)傳輸開始的start信號,,進行狀態(tài)跳轉(zhuǎn)。
(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:傳輸結(jié)束狀態(tài)。在讀寫狀態(tài)下檢測到start信號變?yōu)?時,,進入該狀態(tài),。清零計數(shù)器time_cnt的值,從而實現(xiàn)對讀寫使能信號的關(guān)閉控制,。
(6)狀態(tài)6:讀狀態(tài),。傳輸結(jié)束狀態(tài)后,經(jīng)過TX_DLY_CNT個時鐘周期,,寫使能置低,。停止向buffer中寫入數(shù)據(jù),讀使能依舊為高,。繼續(xù)進行剩余數(shù)據(jù)的讀出,。
(7)狀態(tài)7:傳輸完成狀態(tài)。傳輸結(jié)束狀態(tài)后,,經(jīng)過RX_DLY_CNT個時鐘周期,,讀使能置低。此時buffer中的所有數(shù)據(jù)均已讀出,,不再進行數(shù)據(jù)讀取,。同時置高傳輸完成狀態(tài)信號。
(8)狀態(tài)8:停止?fàn)顟B(tài),。該狀態(tài)在正常數(shù)據(jù)傳輸基本不會出現(xiàn),。若是由start信號異常導(dǎo)致在初始化狀態(tài)檢測到start信號變低進入該狀態(tài),則跳轉(zhuǎn)到空閑狀態(tài),。若因發(fā)送數(shù)據(jù)較短(小于3個),,在寫狀態(tài)檢測到start信號為0,則進入讀狀態(tài),,將寫的數(shù)據(jù)讀出,。
其行為圖與對應(yīng)的時序圖分別如圖5,、圖6所示。
在圖6中,,寫時鐘tx_clk與讀時鐘rx_clk是同源不同相的兩個時鐘,,通過利用SPCB,與寫時鐘對齊的數(shù)據(jù)wdata轉(zhuǎn)變?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通信速率下)。目前同源相位補償緩沖這一設(shè)計已申請專利[8],。
3 延時檢測
3.1 數(shù)字設(shè)計的理論延時
通過對設(shè)計的PCS進一步的分析,,各個模塊的延時如表1、表2所示,。
可以看出,,該PCS的理論延遲為9~11個時鐘周期,并且在絕大多數(shù)情況下其延時在10個時鐘周期之內(nèi),。對應(yīng)數(shù)學(xué)期望值為9.12拍,。即32 Gb/s的傳輸速率下,對應(yīng)的絕對延時為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ù)傳輸延時,本文參照相關(guān)文獻[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)的控制。其結(jié)構(gòu)圖如圖9所示,。
在進行測試延時之前,,首先應(yīng)解決以下兩個問題:首先整個PCS的數(shù)據(jù)傳輸延時是納秒級的,而SPI模塊的讀寫時鐘頻率一般只有幾十兆,,無法實現(xiàn)延時的實時讀取;其次利用FPGA測得的傳輸延時不僅包含了PCS延時,,還包含了PMA延時、線纜延時以及FPGA上的門電路延時等其他延時,,會對最終的測試結(jié)果造成影響,。
針對以上兩個問題,設(shè)計了一種利用FPGA對PCS進行延時的方案,。該方案的主要原理如下:
通過利用多個延時的總時間和延時的個數(shù)來求出平均延時,。傳輸延時是發(fā)送端發(fā)送數(shù)據(jù)與接收端受到數(shù)據(jù)的時間差??紤]到數(shù)據(jù)接收端在接收到數(shù)據(jù)后rx_valid信號才會置高以及發(fā)送端只有在tx_valid信號為高時才會發(fā)送數(shù)據(jù),,設(shè)計了以下系統(tǒng)延時測試方法:
配置發(fā)送端發(fā)送隨機數(shù)據(jù)包,在數(shù)據(jù)開始發(fā)送時,,tx_valid信號由低變高,。當(dāng)接收端收到數(shù)據(jù)后,rx_valid信號變高,,在下一個時鐘周期置低tx_valid信號,。即之后的數(shù)據(jù)不會被傳輸,經(jīng)過一段時間后rx_valid信號也會變低,。然后再開啟tx_valid,。當(dāng)rx_valid變高后再關(guān)閉tx_valid,以此類推,。工作流程如圖10所示,。
設(shè)整個系統(tǒng)延時為t個時鐘周期,通過上圖可以看出,,rx_valid信號的一次翻轉(zhuǎn)對應(yīng)著(t+1)個時鐘周期,。而1個時鐘周期對應(yīng)一拍32 bit的數(shù)據(jù)傳輸。所以32 Gb/s速率下系統(tǒng)延時t(ns),,rx_valid變高次數(shù)j,,程序運行時間T(s)與時鐘頻率f(GHz)滿足以下關(guān)系:
故可通過寄存器記錄rx_valid由低變高的次數(shù),結(jié)合程序運行時間和數(shù)據(jù)傳輸頻率,,求出系統(tǒng)延時,。
該方法測試的延時是包含了PMA延時、線纜延時以及FPGA上的門電路延時等其他延時的整個系統(tǒng)延時??紤]到PMA延時基本為一定值,,而其他的延時基本是elmore延時,大小僅取決于電路中的電阻和電感,,與頻率無關(guān),。故可通過測試在兩個不同頻率下的系統(tǒng)延時,得出PCS層的延時,。
設(shè)32 Gb/s速率下系統(tǒng)pcs的延時為tp(ns),,其他延時為to(ns),則式(7)可表達為:
從而求得系統(tǒng)中PCS部分延時tp,。同時由于開發(fā)板上的GTX也是由PCS和PMA組成的,,因此該設(shè)計的實際延時應(yīng)再減去GTX的PCS延遲,此延遲經(jīng)仿真實測約為15個周期左右,。在32 Gb/s的傳輸速率下對應(yīng)物理延時為15 ns,。
在本次測試中選取f1=2.5 GHz,f2=2 GHz,,T=60 s,,分別測量j1和j2的多次平均值,測量結(jié)果如表3所示,。
通過方程組(3)可求出tp=24.48 ns,。即32 Gb/s速率下PCS的總延時為24.48 ns,去除GTX的PCS延時15 ns,,整個設(shè)計的PCS延時為9.48 ns,與理論計算值9.12 ns的誤差約為3.95%,,可認為是測量誤差,。
4 結(jié)論
以SERDES為代表的高速串行接口技術(shù)代表了當(dāng)今數(shù)據(jù)傳輸技術(shù)的發(fā)展趨勢。如何進一步壓縮PCS傳輸延遲是SERDES技術(shù)發(fā)展所需解決的迫切難題,。本文在SERDES技術(shù)的基礎(chǔ)上,,通過利用自研相位自適應(yīng)緩沖(SPCB),實現(xiàn)了一個低延時超高速PCS,。分析探討了系統(tǒng)結(jié)構(gòu)中各個模塊的功能實現(xiàn),,并針對CPU直連這一應(yīng)用場景對部分模塊進行優(yōu)化。還對其延時從理論,、仿真與FPGA實測3個方面進行了分析,。相比傳統(tǒng)的PCS方案,本系統(tǒng)數(shù)據(jù)傳輸延時小,,在32 Gb/s的通信速率下僅為10 ns左右,,可應(yīng)用于處理器直連以及2.5D/3D封裝die互連等高速通信場景。該研究成果目前已應(yīng)用于國產(chǎn)處理器直連接口,,為國產(chǎn)裝備自主可控提供了有力支撐,。
參考文獻
[1] 陳東旭.面向2.5G SerDes的8b/10b編解碼電路設(shè)計與測試[D].成都:電子科技大學(xué),,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架構(gòu)SerDes芯片的設(shè)計與實現(xiàn)[D].成都:電子科技大學(xué),,2016.
[6] 王菲,張莎莎,,王茜.信號跨時鐘域問題分析及驗證方法研究[J].電子技術(shù)應(yīng)用,,2017,43(1):43-45,,49.
[7] 王小娟.基于FPGA的異步FIFO的設(shè)計[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ā)接口設(shè)計[J].電子技術(shù)應(yīng)用,2017,,43(6):48-51.
[12] 高虎,,封二強,趙剛.基于Testbench的FPGA實物自動化測試環(huán)境設(shè)計[J].電子技術(shù)應(yīng)用,,2018,,44(4):48-51.
[13] 王玨文,金偉信,,蔡一兵,,等.基于FPGA的SPI總線接口的實現(xiàn)[J].現(xiàn)代電子技術(shù),2010,,33(14):102-104.
作者信息:
吳劍簫1,,王 鵬2,吳 濤1,,高 鵬1,,陳文濤3,4
(1.中國科學(xué)院 上海高等研究院,上海200120,;2.上海大學(xué) 計算機工程與科學(xué)學(xué)院,,上海200444;
3.上海芯來電子科技有限公司,,上海201411,;4.數(shù)學(xué)工程與先進計算國家重點實驗室,江蘇 無錫214125)