0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SerDes是怎么设计的?(一)

摩尔学堂 来源:摩尔学堂 作者:摩尔学堂 2023-10-16 14:50 次阅读

FPGA发展到今天,SerDes(Serializer-Deserializer)基本上是器件的标配了。从PCI发展到PCI-E,从ATA发展到SATA,从并行ADC接口到JESD204,从RIO到Serial RIO……等等,都是在借助SerDes来提高数据传输的性能。SerDes是非常复杂的数模混合设计,用户手册的内容只是描述了相对粗略的概念以及使用方法,并不能完全解释SerDes是怎么工作的。在使用SerDes的过程中,设计者有太多的疑惑:为什么在传输的过程中没有时钟信号?什么是加重和均衡?抖动和误码是什么关系?各种抖动之间有什么关系?时钟怎么恢复?等等这些问题,如果设计者能够完全理解这些问题,那么对于SerDes的开发也不再是难事。本文试着从一个SerDes用户的角度来理解SerDes是怎么设计的。

SerDes的价值

并行总线接口

芯片之间的数据传输,最早的时候是以串行传输的方式完成的,但随着数据量的越来越大,串行数据传输的缺点变得特别明显:速率太低。所以芯片设计者就想着增加数据传输的位宽,用并行的方式传输数据,这样相对于串行传输就有更高的传输速率。芯片之间的互联通古系统同步或者源同步的并行接口传输数据。图1.1演示了系统同步和源同步并行接口。

29621f6c-699e-11ee-939d-92fbcf53809c.jpg

随着接口频率的提高,在系统同步接口方式中,有几个因素限制了有效数据串口宽度的继续增加。

时钟到达两个芯片的传播延时不相等(clock skew)

并行数据各个bit的传播延时博相等 (data skew)

时钟的传播延时和数据的传播延时不一致(skew between data and clock)

虽然可以通过在目的芯片(chip #2)内使用PLL补偿时钟延时差(clock skew),但是PVT(Process Verification Test)变化时,时钟沿是的变化量和数据延时的变化量是不一样的。这又进一步恶化了数据窗口,即无法通过简单的、不断增加的数据总线数达到增加数据传输速率的目的。

源同步接口方式中,发送端Tx把时钟伴随数据一起发送出去,限制了clock skew对有效数据窗口的危害。通常在发送测芯片内部,源同步接口把时钟信号和数据信号当作一样来处理,也就是让它和数据信号经过相同的路径,以保证相同的延时。这样PVT变化时,时钟和数据会朝着同一个方向增大或者减小相同的量,对skew最有利。

我们来做一些合理的典型假设,假设一个32bit数据的并行总线:

发送端的数据skew = 50 ps (很高的要求)

PCB总线引入的skew = 50 ps (很高的要求)

时钟的周期抖动jitter = +/- 50 ps (很高的要求)

接收端触发器采样窗口 = 250 ps (Xilinx V7 高端器件的IO触发器)

可以大致估算出并行接口的最高时钟 = 1/(50+50+100+250) = 2.2GHz (DDR)或者1.1GHz(SDR).

利用源同步接口,数据的有效窗口可以提高很多,通常频率都是在1GHz以下。在实际使用中可以见到如SPI4.2接口的时钟可以高达DDR 700HNz * 16 bits位宽。DDR Memory接口也是一种源同步接口,如DDR3在FPGA中可以做到大约800MHz的时钟(DDR)。

要提高接口的传输带宽有两种方法:一种是提高时钟频率;一种是加大数据位宽。那么数据位宽是不是可以无限制地加大呢?这就要牵扯到另外一个非常重要的问题----同步切换噪声(SSN)。

SSN的计算公式:SSN = L * N * di/dt

L是芯片封装电感,N是数据位宽,di/dt是电流变化的斜率。随着频率的提高,数据位宽的增加,SSN成为提高传输带宽的主要瓶颈。图1.2是一个DDR3串扰的例子。途中低电平的理论值在0V,由于SSN的影响,低电平表现为震荡,震荡噪声的最大值达610mv,因此噪声余量只有1.5V/2 - 610mV = 140mV。

297b1076-699e-11ee-939d-92fbcf53809c.jpg

因此也不可能靠无限地提高数据位宽来继续增加带宽。一种解决SSN的办法是使用差分信号替代单端信号,使用差分信号可以很好地解决SSN的问题,代价是使用更多的芯片引脚。使用差分信号仍然解决不了数据skew的问题,很大位宽的差分信号再加上严格的时序限制,给并行接口带来了很大的挑战。

SerDes接口

源同步接口的时钟频率已经遇到瓶颈,由于信道(channel)的非理想特性,在继续提高频率,信号会被严重损伤,这就需要采用均衡和数据时钟相位检测等技术。这也就是SerDes所采用的技术。SerDes是串行器和解串器的简称。串行器也成为SerDes发送端(Tx),解串器也成为接收端(Rx)。图1.3是一个N对SerDes收发通道的互连演示,一般N小于4.

298f791c-699e-11ee-939d-92fbcf53809c.jpg

可以看到,SerDes不传送时钟信号,这也是SerDes最特别的地方,SerDes在接收端集成了CDR(Clock Data Recovery)电路,利用CDR从数据的边沿信息中抽取时钟,并找到最优的采样位置。

SerDes采用差分方式传送数据。一般会有多个通道的数据放在一个group中以共享PLL资源,每个通道仍然是相互独立工作的。

SerDes需要参考时钟(Reference Clock),一般也是差分的形式以降低噪声。接口端Rx和发送端Tx的参考时钟可以允许几百个ppm的频差(plesio-synchronous system),也可以是同频的时钟,但是对相位差没有要求。

做个简单的比较,一个SerDes通道(Channel)使用4个引脚(Tx+/-, Rx+/-),目前的FPGA可以做到高达28Gbps。而一个16bit的DDR3-1600的线速率为1.6Gbps*16 = 25Gbps,却需要50多个引脚。这样对比之下可以看出SerDes在传输带宽上的优势。

相比于源同步接口,SerDes的主要特点包括:

SerDes在数据线中时钟内嵌,不需要传送时钟信号。

SerDes通过加重/均衡技术可以实现高速长距离传输,如背板。

SerDes使用了较少的芯片引脚。

中间类型

也存在一些介于SerDes和并行接口之间的接口类型,相对源同步接口而言,这些中间类型的接口也使用串行器和解串器,同时也传送用于同步的时钟信号。这类接口如视频显示接口7:1 LVDS等。

SerDes结构

SerDes的主要构成可以分为三部分:PLL模块,发送模块Tx,接收模块Rx。为了方便维护和测试,还会包括控制和状态寄存器,换回测试,PRBS测试等功能。如图2.1

29b51668-699e-11ee-939d-92fbcf53809c.jpg

图中蓝色背景子模块为PCS层,是标准的可综合CMOS数字逻辑,可以使用硬件逻辑实现,也可以使用FPGA软逻辑实现,相对容易理解。褐色背景的子模块是PMA层,是数模混合CML/CMOS电路,是理解SerDes区别于并行接口的关键,也是本文讨论的重点内容。

发送方显(Tx)信号的流向:FPGA逻辑(Fabric)发送过来的并行信号,通过接口FIFO(Interface FIFO),发送到 8B/10B编码器(8B/10B encoder)或扰码器(scambler),以避免数据含有较多的0或者较多的1。之后送给串行器(Serializer)进行并串转换。串行数据警告过均衡器(equalizer)调理,由驱动器(driver)发送出去。

接收方向(Rx)信号的流向,外部串行信号由线性均衡器(Linear Equalizer)或者DFE(Decision Feedback Equalizer)结构均衡器条例,去除一部分确定性抖动(Deterministic jitter).CDR从数据中恢复出来采样时钟,经解串器变为对齐的并行信号。8B/10B解码器(8B/10B decoder)或解扰其(de-scambler)完成解码或者解扰。如果是异步时钟系统(Plesio-synchronous system),在用户FIFO之前还应该有弹性FIFO来补偿频差。

PLL负责产生SerDes各个模块所需要的时钟信号,并管理这些时钟之间的相位关系。以图中线速率10Gbps为例,参考时钟频率250MHz。Serializer/Deserializer至少需要5GHz 0相位时钟和5GHz 0相位时钟和5GHz 90度相位时钟,1GHz(10bit并行)/1.25GHz(8bit并行)时钟等。

一个SerDes通常还需要调试能力,例如伪随机码刘产生和比对,各种环回测试,控制状态寄存器以及访问接口,LOS检测,沿途测试等。

串行器解串器

串行器(Serializer)把并行信号转化为串行信号,解串器(Deserializer)把串行信号转化为并行信号,一般地,并行信号为8/10bit或者16/20bit宽度,串行信号为1bit宽度(也可以分阶段串行化,如8bit->4bit->2bit->1bit以降低equalizer的工作频率)。采用扰码(scrambled)的协议和SDH/SONET,SMPTE SDI使用8/16bit的并行宽度,如PCI-Express采用8B/10B编码的协议,GbE使用10bits/20bits宽度。

一个4:1的串行器图下图2.2所示.8:1或16:1的串行器采用类似的方法实现。在实现时,为了降低均衡器的工作频率,串行器会先把并行数据变为2bit,送给均衡器滤波,最后一步再做2:1串行化。

29cbdf88-699e-11ee-939d-92fbcf53809c.png

一个1:4的解串器如图2.3所示,8:1或16:1的解串器采用类似的实现。实现时,为了降低均衡器的工作频率,均衡器工作在DDR模式下,解串器的输入是2bit或者更宽。

29df3132-699e-11ee-939d-92fbcf53809c.png

串行器解串器的实现采用双沿DDR的工作方式,利用面积换速度的策略,降低了电路中高频率电路的比例,从而降低了电路的噪声。

接收方向除了解串器以外,一般还有对齐功能逻辑(Aligner)。相对SerDes发送端,SerDes接收端起始工作的时刻是任意的,接收器正确收到的第一个bit可能是发送并行数据的任意bit位置。因此需要对齐逻辑来判断从什么bit位置开始,以组成正确的并行逻辑。对齐逻辑通过在串行数据流中搜索特征码字(Alignment Code)来决定串并转换的起始位置。比如8B/10B编码的协议通常用K28.5(正码10‘b1110000011,负码:10’b0001111100)来作为对齐字。图2.4为一个对齐逻辑的演示。通过滑窗,逐bit比对,比找到对起码(Align-Code)的位置,经过多次在相同的位置找到对起码之后,状态机锁定位置并选择相应的位置输出对齐数据。

29edd890-699e-11ee-939d-92fbcf53809c.jpg

发送均衡器(Tx Equalizer)

SerDes信号从发送芯片到达接收芯片所经过的路径成为信道(Channel),包括芯片封装,PCB总线,过孔,电缆,连接器等元件。从频域上看,信道可以简化为一个低通滤波器(LPF)模型,如果SerDes的速率大于信道(channel)的截止频率,就会一定程度上损伤信号。均衡器的作用就是不让信道对信号的损伤。

发送端的均衡器采用FFE(Feed Forward Equalizers)结构,发送端的equalizer也称作加重器(emphasis).加重分为去加重(de-emphasis)和预加重(pre-emphasis)。de-emphasis降低差分信号的摆幅(swing).Pre-emphasis增加差分信号的摆幅。FPGA大部分使用de-emphasis的方式,加重越强,信号的平均幅度就越小。

发送测均衡器设计为一个高通滤波器(HPF),大致为信道频响H(f)的反函数,FFE(Feed Forward Equalization 前行反馈均衡)的目标是让到达接收端的信号为一个干净的信号,FFE的实现方式有很多,典型的例子如下图2.5所示:

2a013da4-699e-11ee-939d-92fbcf53809c.jpg

调节滤波器的系数可以改变滤波器的频响,以补偿不同的信道特性,一般可以动态配置。以10Gbps线速率为例,图2.6为DFE频率响应演示,可以看到对于C0 = 0, C1 = 1, C2 = -0.25的配置,5GHz处高频增益比低频区域高出4dB,从而补偿信道对高频频谱的衰减。

2a2484f8-699e-11ee-939d-92fbcf53809c.png

采样时钟的频率限制了这种FFE,最高只能补偿到Fs/2(上例中Fs/2 = 5GHz)。根据采样定理,串行数据里的信息都包含在5GHz以内,从这个角度看也就足够了。如果要补偿Fs/2以上的频率,就要求DDE高于Fs的工作频率,或者连续时间域滤波器(Continuous Time FFE).

图2.7为DFE时序滤波效果的演示,以10Gbps线速率为例,一个UI = 0.1 ns = 100 ps.演示的串行数据码流为二进制[00000000100001111011110000].

2a35585a-699e-11ee-939d-92fbcf53809c.jpg

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21324

    浏览量

    593215
  • PCI
    PCI
    +关注

    关注

    4

    文章

    608

    浏览量

    129590
  • 总线接口
    +关注

    关注

    0

    文章

    80

    浏览量

    30625
  • SerDes
    +关注

    关注

    6

    文章

    178

    浏览量

    34537
  • 时钟信号
    +关注

    关注

    4

    文章

    374

    浏览量

    28062

原文标题:深入理解SerDes系列之一

文章出处:【微信号:moorexuetang,微信公众号:摩尔学堂】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    GMII、SGMII和SerDes的差异总结

    GMII、SGMII和SerDes的区别和联系? GMII和SGMII区别,上一篇已经介绍了,这一篇重点介绍SGMII和SerDes区别。 GMII和SGMII SGMII接口 SGMII
    的头像 发表于 10-09 11:31 3w次阅读
    GMII、SGMII和<b class='flag-5'>SerDes</b>的差异总结

    SerDes的技术原理 SerDes的重要概念和技术概述

    SerDes是SERializer(串行器)/DESerializer(解串器)的简称,是一种主流的时分多路复用(TDM)、点对点(P2P)的串行通信技术。
    的头像 发表于 11-14 09:32 5720次阅读
    <b class='flag-5'>SerDes</b>的技术原理 <b class='flag-5'>SerDes</b>的重要概念和技术概述

    SERDES的作用 SerDes基础知识详解

    SERDES是英文SERializer(串行器)/DESerializer(解串器)的简称。
    的头像 发表于 01-04 09:04 1107次阅读
    <b class='flag-5'>SERDES</b>的作用 <b class='flag-5'>SerDes</b>基础知识详解

    教你如何进行Xilinx SerDes调试

    FPGA SERDES的应用需要考虑到板级硬件,SERDES参数和使用,应用协议等方面。由于这种复杂性,SERDES的调试工作对很多工程师来说是一个挑战。
    发表于 03-15 14:55 1w次阅读
    教你如何进行Xilinx <b class='flag-5'>SerDes</b>调试

    如何使用HyperLynx_DRC来查找SERDES设计

    如何使用 HyperLynx DRC 来查找 SERDES 设计问题
    发表于 01-06 14:49 0次下载

    如何使用 HyperLynx DRC 来查找 SERDES 设计

    如何使用 HyperLynx DRC 来查找 SERDES 设计问题
    发表于 05-24 17:12 0次下载

    参考时钟对SERDES性能的影响

    我们知道,SERDES对参考时钟有严格的相位噪声性能要求。通常,SERDES供应商会根据其SERDES采用的PLL以及CDR架构特点,以及性能数据,提出对参考时钟的相位噪声的具体要求。
    发表于 02-10 18:40 6010次阅读
    参考时钟对<b class='flag-5'>SERDES</b>性能的影响

    SERDES FPGA设计手册免费下载

    为了学习xilinx serdes 原语的使用,以及交流学习经验,在工程项目中方便的应用SERDES进行设计,故编写此文档。
    发表于 02-26 10:04 37次下载
    <b class='flag-5'>SERDES</b> FPGA设计手册免费下载

    SERDES的优势 SERDES演变的看法

    SERDES的优势 引脚数量和通道优势 SERDES最明显的优势是具备更少的引脚数量和线缆/通道数量。对于早期的SERDES,这意味着数据可以通过同轴电缆或光纤发送。 对于现代的SERDES
    的头像 发表于 07-23 11:59 3879次阅读

    高速SerDes PCB 设计

    SerDes/Differential Pair-- The Feature of High Speed Designreference list– reference1:link 应对未来高速
    发表于 11-07 10:21 47次下载
    高速<b class='flag-5'>SerDes</b> PCB 设计

    SerDes的基本结构

    FPGA发展到今天,SerDes(Serializer-Deserializer)基本上是标配了。
    的头像 发表于 10-31 11:28 1430次阅读

    SerDes是什么?SerDes功能和特性概述

    SerDes 是空间到时间到空间的转换。并行数据同时传输但占用不同的物理互连,串行数据共享相同的物理空间但占用不同的时间时刻
    的头像 发表于 01-31 14:13 3644次阅读

    介绍一种采用光SerDes而非电SerDes的高速收发器

    同时介绍一种采用光电集成技术的,即采用光SerDes而非电SerDes的高速收发器。
    的头像 发表于 04-01 09:28 1138次阅读

    什么是SerDesSerDes的应用场景又是什么呢?

    首先我们要了解什么是SerDesSerDes的应用场景又是什么呢?SerDes又有哪些常见的种类?
    的头像 发表于 06-06 17:03 5522次阅读
    什么是<b class='flag-5'>SerDes</b>?<b class='flag-5'>SerDes</b>的应用场景又是什么呢?

    为什么我们需要SERDESSERDES的优点有哪些?

    尽管设计和验证很复杂,SERDES 已成为 SoC 模块不可或缺的一部分。随着 SERDES IP 模块现已推出,它有助于缓解任何成本、风险和上市时间问题。
    的头像 发表于 10-23 14:44 538次阅读
    为什么我们需要<b class='flag-5'>SERDES</b>?<b class='flag-5'>SERDES</b>的优点有哪些?