文獻(xiàn)標(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ù)通過高速串行信號進(jìn)行差分傳輸,,并在接收端恢復(fù)的過程[1],。它具有速率高、功耗低和抗干擾能力強(qiáng)等特點(diǎn),,已廣泛應(yīng)用于計算機(jī)和通信領(lǐng)域,。SERDES系統(tǒng)由實現(xiàn)串行與解串的物理介質(zhì)連接子層(PMA)和負(fù)責(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)準(zhǔn)兼容性要求,,給國產(chǎn)芯片,尤其是CPU應(yīng)用帶來不便,。另外購買相關(guān)IP授權(quán)也對芯片的國產(chǎn)自主可控帶來隱患,。因此如何降低SERDES系統(tǒng)延時,進(jìn)而滿足國產(chǎn)芯片直連應(yīng)用,,是本文重點(diǎn)討論的問題,。
本文介紹基于同源相位補(bǔ)償緩沖(SPCB)的低延時、超高速PCS的設(shè)計與實現(xiàn),,其單向帶寬可達(dá)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ù)進(jìn)行編碼,,并在編碼后的數(shù)據(jù)流中加入用于定界的有效同步位。解碼模塊根據(jù)有效同步位對數(shù)據(jù)塊進(jìn)行對齊,,并對數(shù)據(jù)進(jìn)行解碼,,恢復(fù)為原始數(shù)據(jù)。
(2)加解擾模塊:利用本征多項式對數(shù)據(jù)進(jìn)行編解碼,,使數(shù)據(jù)隨機(jī)化,,減少了數(shù)據(jù)中連續(xù)的“0”和“1”的個數(shù),避免差分接口上的信號長期不跳轉(zhuǎn),,影響時鐘恢復(fù)而導(dǎo)致誤碼,。
(3)發(fā)送/接收端速率匹配模塊:為了確保PMA側(cè)傳入和傳出的數(shù)據(jù)位寬與接口位寬相一致,需要使用速率匹配模塊進(jìn)行位寬轉(zhuǎn)換,。
(4)彈性緩沖模塊:用于補(bǔ)償本地接收側(cè)與對端發(fā)送側(cè)的異步時鐘頻率差異,。通過頻率的補(bǔ)償實現(xiàn)相位同步,保證數(shù)據(jù)傳輸穩(wěn)定可靠。
(5)數(shù)據(jù)分塊與塊重建模塊:根據(jù)系統(tǒng)當(dāng)前的工作狀態(tài),,將發(fā)送的數(shù)據(jù)進(jìn)行分塊放入不同的通道中,,并在接收端進(jìn)行數(shù)據(jù)的合并與恢復(fù),。
SERDES系統(tǒng)PCS層的原理圖如圖1所示。
1.2 PCS層設(shè)計的優(yōu)化
根據(jù)處理器直連應(yīng)用場景的特點(diǎn),,對PCS設(shè)計進(jìn)行了以下延時優(yōu)化:
(1)刪除彈性緩沖模塊,。彈性緩沖模塊利用類異步FIFO的方法來補(bǔ)償本地時鐘與恢復(fù)時鐘的頻率差異。其數(shù)據(jù)傳輸延時與緩沖深度有關(guān),,一般在10個時鐘周期以上,。由于在一個機(jī)箱甚至PCB上多顆CPU可采用同源參考時鐘,即不存在參考時鐘頻差,,故可去除此模塊,。
(2)編解碼采用32B/34B編碼。由于PMA的數(shù)據(jù)位寬是32 bit,,若采用傳統(tǒng)的64B/66B進(jìn)行編碼,,則需要兩拍數(shù)據(jù)才能進(jìn)行一次編碼。這會帶來額外一個時鐘周期的數(shù)據(jù)傳輸延時,。
(3)采用自研的SPCB進(jìn)行跨時鐘域處理,。基于處理器直連場景,,PMA各路發(fā)送/接收時鐘同源不同相,,故需要進(jìn)行跨時鐘域處理。傳統(tǒng)的異步FIFO則會帶來至少5~6個時鐘周期的延遲,。這里專門設(shè)計了SPCB進(jìn)一步壓縮延時,。
優(yōu)化后整個PCS層的結(jié)構(gòu)框圖如圖2所示。
該P(yáng)CS可配置在多通路模式下工作,,支持自動或手動切除故障通路,,單路單向帶寬可支持到32 Gb/s,在該速率下整個PCS層的延時約為9~11 ns,。同時PCS還支持?jǐn)?shù)據(jù)通路翻轉(zhuǎn),、遠(yuǎn)端/近端自環(huán)、BIST測試等多種工作模式,。目前PCS已應(yīng)用于國產(chǎn)處理器芯片的直連接口,。
2 同源相位補(bǔ)償緩沖(SPCB)的工作原理
由于PCS與PMA側(cè)時鐘不同,需進(jìn)行跨時鐘域處理,。在進(jìn)行高速數(shù)據(jù)傳輸時,,常用的跨時鐘域操作往往會帶來較大的延時[6]??紤]到發(fā)送端與接收端的時鐘是同源時鐘這一應(yīng)用背景,,為進(jìn)一步提高效率,壓縮延時,,本設(shè)計對傳統(tǒng)跨時鐘域的方案進(jìn)行了改進(jìn),。使用同源相位補(bǔ)償緩沖(SPCB),,大大縮短了跨時鐘域的延時,。
在高速SERDES系統(tǒng)中,,傳統(tǒng)的跨時鐘域方案是使用異步FIFO,利用讀寫指針和空滿狀態(tài)進(jìn)行工作[7],,數(shù)據(jù)傳輸延遲約為5~6個時鐘周期,。若在PCS的發(fā)送側(cè)與接收側(cè)均采用其進(jìn)行跨時鐘域操作,則異步交接部分延時就達(dá)10~12個時鐘周期,,很難滿足設(shè)計低延時需求,。
考慮到處理器直連接口發(fā)送端與接收端可采用同源時鐘的特點(diǎn),設(shè)計了同源相位補(bǔ)償緩沖,,通過控制讀寫路徑中延時單元的個數(shù)實現(xiàn)對緩沖讀寫操作間隔的精準(zhǔn)控制,。設(shè)計中將同源不同相的時鐘進(jìn)行相位補(bǔ)償,從而實現(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)機(jī)在未傳輸或傳輸完成后處于空閑狀態(tài),。清零并關(guān)閉計數(shù)器。等待數(shù)據(jù)傳輸開始的start信號,,進(jìn)行狀態(tài)跳轉(zhuǎn),。
(2)狀態(tài)2:初始化狀態(tài)。在收到了start信號后,,在數(shù)據(jù)傳輸開始之前對同源相位補(bǔ)償緩沖進(jìn)行初始化,。置低讀寫使能信號,,清空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)?時,進(jìn)入該狀態(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ù)進(jìn)行剩余數(shù)據(jù)的讀出,。
(7)狀態(tài)7:傳輸完成狀態(tài),。傳輸結(jié)束狀態(tài)后,經(jīng)過RX_DLY_CNT個時鐘周期,,讀使能置低,。此時buffer中的所有數(shù)據(jù)均已讀出,不再進(jìn)行數(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信號變低進(jìn)入該狀態(tài),,則跳轉(zhuǎn)到空閑狀態(tài)。若因發(fā)送數(shù)據(jù)較短(小于3個),在寫狀態(tài)檢測到start信號為0,,則進(jìn)入讀狀態(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)了跨時鐘域的操作,。
利用同源相位補(bǔ)償緩沖,可以通過配置邏輯鏈之間延時單元個數(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通信速率下),。目前同源相位補(bǔ)償緩沖這一設(shè)計已申請專利[8]。
3 延時檢測
3.1 數(shù)字設(shè)計的理論延時
通過對設(shè)計的PCS進(jìn)一步的分析,,各個模塊的延時如表1,、表2所示。
可以看出,,該P(yáng)CS的理論延遲為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 實際延時的測試
為了進(jìn)一步檢測該P(yáng)CS的實際數(shù)據(jù)傳輸延時,,本文參照相關(guān)文獻(xiàn)[9-12],利用FPGA進(jìn)行測試。
本次測試選用了Xilinx公司的基于Xilinx kintex-7 FPGA的XC7K325T-IMG開發(fā)板,,使用兩塊開發(fā)板上的GTX(Gigabit Transceiver,,吉比特收發(fā)器)接口將各自發(fā)送端經(jīng)過發(fā)送路徑的數(shù)據(jù)連接到另一塊FPGA的接收端,分別通過板上的SPI接口[13]與PC進(jìn)行通信,,實現(xiàn)對整個系統(tǒng)的控制,。其結(jié)構(gòu)圖如圖9所示。
在進(jìn)行測試延時之前,,首先應(yīng)解決以下兩個問題:首先整個PCS的數(shù)據(jù)傳輸延時是納秒級的,,而SPI模塊的讀寫時鐘頻率一般只有幾十兆,無法實現(xiàn)延時的實時讀取;其次利用FPGA測得的傳輸延時不僅包含了PCS延時,,還包含了PMA延時,、線纜延時以及FPGA上的門電路延時等其他延時,會對最終的測試結(jié)果造成影響,。
針對以上兩個問題,,設(shè)計了一種利用FPGA對PCS進(jìn)行延時的方案。該方案的主要原理如下:
通過利用多個延時的總時間和延時的個數(shù)來求出平均延時,。傳輸延時是發(fā)送端發(fā)送數(shù)據(jù)與接收端受到數(shù)據(jù)的時間差,。考慮到數(shù)據(jù)接收端在接收到數(shù)據(jù)后rx_valid信號才會置高以及發(fā)送端只有在tx_valid信號為高時才會發(fā)送數(shù)據(jù),,設(shè)計了以下系統(tǒng)延時測試方法:
配置發(fā)送端發(fā)送隨機(jī)數(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,,程序運(yùn)行時間T(s)與時鐘頻率f(GHz)滿足以下關(guān)系:
故可通過寄存器記錄rx_valid由低變高的次數(shù),,結(jié)合程序運(yùn)行時間和數(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)可表達(dá)為:
從而求得系統(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%,可認(rèn)為是測量誤差,。
4 結(jié)論
以SERDES為代表的高速串行接口技術(shù)代表了當(dāng)今數(shù)據(jù)傳輸技術(shù)的發(fā)展趨勢,。如何進(jìn)一步壓縮PCS傳輸延遲是SERDES技術(shù)發(fā)展所需解決的迫切難題。本文在SERDES技術(shù)的基礎(chǔ)上,,通過利用自研相位自適應(yīng)緩沖(SPCB),,實現(xiàn)了一個低延時超高速PCS。分析探討了系統(tǒng)結(jié)構(gòu)中各個模塊的功能實現(xiàn),,并針對CPU直連這一應(yīng)用場景對部分模塊進(jìn)行優(yōu)化,。還對其延時從理論、仿真與FPGA實測3個方面進(jìn)行了分析,。相比傳統(tǒng)的PCS方案,,本系統(tǒng)數(shù)據(jù)傳輸延時小,在32 Gb/s的通信速率下僅為10 ns左右,可應(yīng)用于處理器直連以及2.5D/3D封裝die互連等高速通信場景,。該研究成果目前已應(yīng)用于國產(chǎn)處理器直連接口,,為國產(chǎn)裝備自主可控提供了有力支撐。
參考文獻(xià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] 高虎,,封二強(qiáng),,趙剛.基于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é) 計算機(jī)工程與科學(xué)學(xué)院,,上海200444,;
3.上海芯來電子科技有限公司,上海201411,;4.數(shù)學(xué)工程與先進(jìn)計算國家重點(diǎn)實驗室,,江蘇 無錫214125)