文献标识码:A
DOI:10.16157/j.issn.0258-7998.190593
中文引用格式:吴剑箫,王鹏,吴涛,等. 基于SPCB的处理器直连低延时PCS的设计实现[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(串行解串)是指将数据通过高速串行信号进行差分传输,并在接收端恢复的过程[1]。它具有速率高、功耗低和抗干扰能力强等特点,已广泛应用于计算机和通信领域。SERDES系统由实现串行与解串的物理介质连接子层(PMA)和负责数据流编解码的物理编码子层(PCS)组成[2]。PMA主要由模拟电路构成,延时较低,一般在6~7 ns以内;PCS则由数字电路构成,实现编解码、加解扰和多路对齐等功能,延时较大,通常为几十纳秒。当前的芯片直连应用场景要求传输延时最好控制在20 ns以内。以处理器的直连接口为例,Intel QPI(QuickPath Interconnect)与AMD HT(HyperTransport)的传输延时均小于20 ns[3-4]。PCI-SIG推出的CCIX延时也小于30 ns。但QPI和HT通常适用X86架构的芯片互连,CCIX则有PCIe标准兼容性要求,给国产芯片,尤其是CPU应用带来不便。另外购买相关IP授权也对芯片的国产自主可控带来隐患。因此如何降低SERDES系统延时,进而满足国产芯片直连应用,是本文重点讨论的问题。
本文介绍基于同源相位补偿缓冲(SPCB)的低延时、超高速PCS的设计与实现,其单向带宽可达N×32 Gb/s(N为可配置物理通道数),收发延时为9~11 ns,加上PMA部分6 s延时,整个SERDES系统传输延时可控制在17 ns以内,能够满足芯片直连等应用场景需求。
1 原理介绍
1.1 SERDES系统的PCS
传统SERDES系统的PCS层由发送通道与接收通道组成:编码、加扰、速率匹配和跨时钟域模块构成发送通道;解码、解扰、速率匹配、跨时钟域和弹性缓冲模块构成接收通道[5]。另外,为了适配多通道传输,高速SERDES系统常需要在发送端和接收端设置数据分块与块重建模块。
PCS层中各个模块的功能如下:
(1)编解码模块:编码模块将数据进行编码,并在编码后的数据流中加入用于定界的有效同步位。解码模块根据有效同步位对数据块进行对齐,并对数据进行解码,恢复为原始数据。
(2)加解扰模块:利用本征多项式对数据进行编解码,使数据随机化,减少了数据中连续的“0”和“1”的个数,避免差分接口上的信号长期不跳转,影响时钟恢复而导致误码。
(3)发送/接收端速率匹配模块:为了确保PMA侧传入和传出的数据位宽与接口位宽相一致,需要使用速率匹配模块进行位宽转换。
(4)弹性缓冲模块:用于补偿本地接收侧与对端发送侧的异步时钟频率差异。通过频率的补偿实现相位同步,保证数据传输稳定可靠。
(5)数据分块与块重建模块:根据系统当前的工作状态,将发送的数据进行分块放入不同的通道中,并在接收端进行数据的合并与恢复。
SERDES系统PCS层的原理图如图1所示。
1.2 PCS层设计的优化
根据处理器直连应用场景的特点,对PCS设计进行了以下延时优化:
(1)删除弹性缓冲模块。弹性缓冲模块利用类异步FIFO的方法来补偿本地时钟与恢复时钟的频率差异。其数据传输延时与缓冲深度有关,一般在10个时钟周期以上。由于在一个机箱甚至PCB上多颗CPU可采用同源参考时钟,即不存在参考时钟频差,故可去除此模块。
(2)编解码采用32B/34B编码。由于PMA的数据位宽是32 bit,若采用传统的64B/66B进行编码,则需要两拍数据才能进行一次编码。这会带来额外一个时钟周期的数据传输延时。
(3)采用自研的SPCB进行跨时钟域处理。基于处理器直连场景,PMA各路发送/接收时钟同源不同相,故需要进行跨时钟域处理。传统的异步FIFO则会带来至少5~6个时钟周期的延迟。这里专门设计了SPCB进一步压缩延时。
优化后整个PCS层的结构框图如图2所示。
该PCS可配置在多通路模式下工作,支持自动或手动切除故障通路,单路单向带宽可支持到32 Gb/s,在该速率下整个PCS层的延时约为9~11 ns。同时PCS还支持数据通路翻转、远端/近端自环、BIST测试等多种工作模式。目前PCS已应用于国产处理器芯片的直连接口。
2 同源相位补偿缓冲(SPCB)的工作原理
由于PCS与PMA侧时钟不同,需进行跨时钟域处理。在进行高速数据传输时,常用的跨时钟域操作往往会带来较大的延时[6]。考虑到发送端与接收端的时钟是同源时钟这一应用背景,为进一步提高效率,压缩延时,本设计对传统跨时钟域的方案进行了改进。使用同源相位补偿缓冲(SPCB),大大缩短了跨时钟域的延时。
在高速SERDES系统中,传统的跨时钟域方案是使用异步FIFO,利用读写指针和空满状态进行工作[7],数据传输延迟约为5~6个时钟周期。若在PCS的发送侧与接收侧均采用其进行跨时钟域操作,则异步交接部分延时就达10~12个时钟周期,很难满足设计低延时需求。
考虑到处理器直连接口发送端与接收端可采用同源时钟的特点,设计了同源相位补偿缓冲,通过控制读写路径中延时单元的个数实现对缓冲读写操作间隔的精准控制。设计中将同源不同相的时钟进行相位补偿,从而实现跨时钟域操作。其结构如图3所示。
该结构具体工作原理为:当控制信号有效时,分别通过两条由多个延时单元组成的逻辑链产生读写信号,直接控制Buffer的读写。由于发送端与接收端的PMA用的是同源参考时钟,因此数据读写的频率完全相同,读写指针更新的速率也一致,Buffer中数据个数将维持一个定值。因此整个buffer既不会写满也不会读空,能够持续正常工作。通过配置两条逻辑链之间延时单元个数,可以实现对读写使能信号间距的控制,从而控制数据读写的延时。通过利用SPCB,可以将读写延迟缩短至1~2个时钟周期。
SPCB的状态工作流程如图4所示,共计8个状态。
(1)状态1:空闲状态。状态机在未传输或传输完成后处于空闲状态。清零并关闭计数器。等待数据传输开始的start信号,进行状态跳转。
(2)状态2:初始化状态。在收到了start信号后,在数据传输开始之前对同源相位补偿缓冲进行初始化。置低读写使能信号,清空buffer中的数据,同时打开计数器并清空传输完成状态信号。
(3)状态3:写状态。初始化后,经过TX_DLY_CNT个时钟周期,写使能置高。更新写数据和写指针,向buffer中写入数据。
(4)状态4:读写状态。初始化后,经过RX_DLY_CNT个时钟周期,读使能也被置高。开始更新读数据和读指针,在写入数据的同时读出数据。
(5)状态5:传输结束状态。在读写状态下检测到start信号变为0时,进入该状态。清零计数器time_cnt的值,从而实现对读写使能信号的关闭控制。
(6)状态6:读状态。传输结束状态后,经过TX_DLY_CNT个时钟周期,写使能置低。停止向buffer中写入数据,读使能依旧为高。继续进行剩余数据的读出。
(7)状态7:传输完成状态。传输结束状态后,经过RX_DLY_CNT个时钟周期,读使能置低。此时buffer中的所有数据均已读出,不再进行数据读取。同时置高传输完成状态信号。
(8)状态8:停止状态。该状态在正常数据传输基本不会出现。若是由start信号异常导致在初始化状态检测到start信号变低进入该状态,则跳转到空闲状态。若因发送数据较短(小于3个),在写状态检测到start信号为0,则进入读状态,将写的数据读出。
其行为图与对应的时序图分别如图5、图6所示。
在图6中,写时钟tx_clk与读时钟rx_clk是同源不同相的两个时钟,通过利用SPCB,与写时钟对齐的数据wdata转变为了与读时钟对齐的数据rdata,实现了跨时钟域的操作。
利用同源相位补偿缓冲,可以通过配置逻辑链之间延时单元个数的差值,实现对读写使能信号间距的控制。图5中,逻辑路径1和逻辑路径2上的延时单元个数分别为2和4,读写数据传输延迟为2个时钟周期。SPCB可以将跨时钟域延时由原先的5~6个时钟周期缩短至1~2个时钟周期。在PCS的发送与接收端均采用SPCB,可将整个SERDES系统的传输延时降低6~10 ns(32 Gb/s通信速率下)。目前同源相位补偿缓冲这一设计已申请专利[8]。
3 延时检测
3.1 数字设计的理论延时
通过对设计的PCS进一步的分析,各个模块的延时如表1、表2所示。
可以看出,该PCS的理论延迟为9~11个时钟周期,并且在绝大多数情况下其延时在10个时钟周期之内。对应数学期望值为9.12拍。即32 Gb/s的传输速率下,对应的绝对延时为9.12 ns。
3.2 仿真延时的检测
通过观察波形,计算发送端发送到第一个数据到接收端接收到第一个数据的时间差可以确定整个系统数据通路的延时。通过图7、图8可以看出此时发送端延时为4~5时钟周期,接收端延时为5~6个时钟周期,整个系统的数据延时为9~11个时钟周期,与理论值相符。
3.3 实际延时的测试
为了进一步检测该PCS的实际数据传输延时,本文参照相关文献[9-12],利用FPGA进行测试。
本次测试选用了Xilinx公司的基于Xilinx kintex-7 FPGA的XC7K325T-IMG开发板,使用两块开发板上的GTX(Gigabit Transceiver,吉比特收发器)接口将各自发送端经过发送路径的数据连接到另一块FPGA的接收端,分别通过板上的SPI接口[13]与PC进行通信,实现对整个系统的控制。其结构图如图9所示。
在进行测试延时之前,首先应解决以下两个问题:首先整个PCS的数据传输延时是纳秒级的,而SPI模块的读写时钟频率一般只有几十兆,无法实现延时的实时读取;其次利用FPGA测得的传输延时不仅包含了PCS延时,还包含了PMA延时、线缆延时以及FPGA上的门电路延时等其他延时,会对最终的测试结果造成影响。
针对以上两个问题,设计了一种利用FPGA对PCS进行延时的方案。该方案的主要原理如下:
通过利用多个延时的总时间和延时的个数来求出平均延时。传输延时是发送端发送数据与接收端受到数据的时间差。考虑到数据接收端在接收到数据后rx_valid信号才会置高以及发送端只有在tx_valid信号为高时才会发送数据,设计了以下系统延时测试方法:
配置发送端发送随机数据包,在数据开始发送时,tx_valid信号由低变高。当接收端收到数据后,rx_valid信号变高,在下一个时钟周期置低tx_valid信号。即之后的数据不会被传输,经过一段时间后rx_valid信号也会变低。然后再开启tx_valid。当rx_valid变高后再关闭tx_valid,以此类推。工作流程如图10所示。
设整个系统延时为t个时钟周期,通过上图可以看出,rx_valid信号的一次翻转对应着(t+1)个时钟周期。而1个时钟周期对应一拍32 bit的数据传输。所以32 Gb/s速率下系统延时t(ns),rx_valid变高次数j,程序运行时间T(s)与时钟频率f(GHz)满足以下关系:
故可通过寄存器记录rx_valid由低变高的次数,结合程序运行时间和数据传输频率,求出系统延时。
该方法测试的延时是包含了PMA延时、线缆延时以及FPGA上的门电路延时等其他延时的整个系统延时。考虑到PMA延时基本为一定值,而其他的延时基本是elmore延时,大小仅取决于电路中的电阻和电感,与频率无关。故可通过测试在两个不同频率下的系统延时,得出PCS层的延时。
设32 Gb/s速率下系统pcs的延时为tp(ns),其他延时为to(ns),则式(7)可表达为:
从而求得系统中PCS部分延时tp。同时由于开发板上的GTX也是由PCS和PMA组成的,因此该设计的实际延时应再减去GTX的PCS延迟,此延迟经仿真实测约为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为代表的高速串行接口技术代表了当今数据传输技术的发展趋势。如何进一步压缩PCS传输延迟是SERDES技术发展所需解决的迫切难题。本文在SERDES技术的基础上,通过利用自研相位自适应缓冲(SPCB),实现了一个低延时超高速PCS。分析探讨了系统结构中各个模块的功能实现,并针对CPU直连这一应用场景对部分模块进行优化。还对其延时从理论、仿真与FPGA实测3个方面进行了分析。相比传统的PCS方案,本系统数据传输延时小,在32 Gb/s的通信速率下仅为10 ns左右,可应用于处理器直连以及2.5D/3D封装die互连等高速通信场景。该研究成果目前已应用于国产处理器直连接口,为国产装备自主可控提供了有力支撑。
参考文献
[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芯片的设计与实现[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] 刘安,禹卫东,马小兵,等.基于FPGA的高速串行数据收发接口设计[J].电子技术应用,2017,43(6):48-51.
[12] 高虎,封二强,赵刚.基于Testbench的FPGA实物自动化测试环境设计[J].电子技术应用,2018,44(4):48-51.
[13] 王珏文,金伟信,蔡一兵,等.基于FPGA的SPI总线接口的实现[J].现代电子技术,2010,33(14):102-104.
作者信息:
吴剑箫1,王 鹏2,吴 涛1,高 鹏1,陈文涛3,4
(1.中国科学院 上海高等研究院,上海200120;2.上海大学 计算机工程与科学学院,上海200444;
3.上海芯来电子科技有限公司,上海201411;4.数学工程与先进计算国家重点实验室,江苏 无锡214125)