一文缕顺Serdes的前前后后

原创 神采逸逸 发表于 微信公众号:非主流EE 之 华山派 (微信公众号ID: SerdesWorld

本文借用 ‘包容链’ 的逻辑来展开描述。

Serdes应当属于一种 数据传输的接口技术,一般用在高速传输的场合。

谈到数据传输,在接口上总体分为两大类,并行传输(in parallel)和 串行传输(in serial)。并行的优势是简单,缺陷主要体现在两点:第一是速率跑不高,因为数据需要对齐,速率上去之后,这一点相当难以满足,目前并行速率跑得最High的是DDR,但DDR的协议和时序标准相当繁琐,而且对于PCB板的一大堆走线也有非常严格的要求,设计自由度相当有限。第二点,并行总线扔到接口上去之后,对芯片的管脚资源是一种极大的挥霍,大家不要小看这一点,PIN脚资源对于大规模集成电路是相当可贵的。而并口的这两个缺陷恰恰是串行传输接口的典型优势。高速Serdes(High Speed Serdes)全双工通道需要 发/收 两对差分线 四个PIN脚,目前已经商用的速率标准已经高达112Gbps。

聚焦回串行传输。UART和IIC作为串口的鼻祖,我个人认为,多多少少已经基本具备了Serdes体系架构的雏形:在用户逻辑侧,是一定宽度的并行数据,而在接口侧,是转成了串行的数据流。

这些串口总线在低速领域发挥了相当恢弘的作用和几乎无可替代的地位。但是这也正标示着它们拥有着一个共性的软肋:速率跑不高。因此这些总线渐渐的主要应用在传输少量控制信令的场合,由于它们的控制器逻辑简单,工作稳定,也常常作为芯片控制平面的备用接口(主接口一般为PCIe)。

那么最关键的一个问题来了,为什么Serdes能够跑到很高的速率?
一文缕顺Serdes的前前后后
分析Serdes,一定要牢牢抓住这个小系统的3要素:
发送(Tx)- 通道(Channel)- 接收(Rx)
一文缕顺Serdes的前前后后
天底下一定没有免费的晚餐,有所得必有所出。Serdes的高速性能是倚赖它极其复杂精细的模块化电路和算法(引申一:这些东西越强悍,一般来讲就越耗电),这在应用层面用户可见且可操作的角度,主要归功于两个部分的功能:链路均衡,和时钟数据恢复

以上是结论,要理解这一点,得按照 从问题到答案 的逻辑来讲。
问题:高速会带来什么问题?
这本质上是一个SI的问题(我们说IIC在低速很牛逼是因为低速情况下基本没有信号完整性问题的困扰,因为通道对于信号的损伤对其完整性远远构不成威胁),这里我只给出结论(想要探究更细致的东西可以参考Eric Bogatin的《Signal and Power Integrity》,或者喜马拉雅FM平台上我关于这本书的解说):一个可控阻抗有损传输线的通道对于信号的 ‘衰减’(Loss,Attenuation) 是 有色的,也就是频率选择性的,通道对信号高频分量的衰减大于低频分量的衰减。(引申二:这种衰减是sqrt(f)和f的线性叠加)
传输线的这样一个材料特性,导致信号在时域趋向于:
边 沿 退 化
一文缕顺Serdes的前前后后
边沿的退化显然会消耗一定比例的时序余量,信号速率越高,剩下的时序余量越小,也就是眼图趋于闭合。

均衡器的作用,直观理解就是在判决之前,尽可能地让眼图睁大。
要理解均衡器的工作机理,我认为可以大致概括成:
基于对通道特性的先验性知识,反向补偿其对信号的损伤。
这种补偿/均衡分为 线性非线性 两大类。我一直都习惯于用医生治病救人的比喻来理解Serdes均衡算法,线性均衡类似于给病人吃药,以一种连续的、循序渐进的方式补偿信号的完整性,而非线性均衡则类似于给病人作手术,以一种斩立决的方式快速补偿信号。(引申三:非线性均衡容易带来误码的传播)
一文缕顺Serdes的前前后后
典型的线性均衡有两种:FFE(Feed Forward Eq.)(引申四:Tx端的FFE和Rx端的FFE(引申五:Rx FFE仅存在于ADC-based 架构的Serdes)在系统和频域的角度看是完全一样的,但在时域信号处理的角度去分析是不一样的)和 Rx端的CTLE(Continuous Time Linear Eq.)。
这里从频域去简单分析线性均衡器,FFE和CTLE本质上都是一种滤波,离散数字的方式(TAP加权)和连续模拟(零极点函数)的方式来实现,实现方式不同,他们的特性和优缺点也不一样。总的来说,它们都是通过 ‘适当’ 抬高 频域信号的 高频分量,‘适当’ 压低 低频分量,来尽量均衡信号恢复其原始的能量分布。(引申六:有的CTLE电路借用数字控制和模拟电路相结合的方式拓宽其对频带增益的控制,提供低、中、高频,甚至五个以上的控制点)
典型的非线性均衡:DFE(Decision Feedback Eq.)理解DFE的工作机理,适合在时域上进行分析,而且绕开眼图,转到单位冲激响应(IPR),如下图所示,通道对于信号的衰减特性会使得冲激响应有一定长度的 拖尾,而不是理想的陡降,这个拖尾的响应函数卷积上原始信号造成的就是常说的 码间干扰ISI),顾名思义,本码的后拖尾影响到了后码(主),前拖尾影响到了前码(次)。
一文缕顺Serdes的前前后后
DFE是通过 当前码 判决的结果 负反馈(注意DFE模块示意图前面的那个 ‘-’ 号) 叠加到 后一个码 上面,然后再进行判决。下图很直观地解释了1阶DFE的工作过程(多阶同理):
一文缕顺Serdes的前前后后
我们把a)图箭头指向的那个负脉冲看成是当前需要判决的码元,它前面的很多个‘1’电平因为拖尾把它的电平也同样抬高了,高到判决电平以上就造成了误判(误码),在b)图里面,DFE算法在判决当前码元之前,通过前一个码元‘1’的判决结果给当前码元叠加了一个负向的H1,相当于在一定程度上把当前码元因为之前拖尾ISI抬高的部分补偿回去(引申七:多大程度,也就是H1系数有多大,是DFE算法需要收敛到的最合适当前Serdes系统的值),这样再进行判决,误码的可能性就大大降低。

到这里,Serdes链路均衡的概念和常见均衡器的工作机理就基本讲清楚了,链路均衡理解了,那么Serdes如何工作也就在系统层面上有了大概的认识。至于CDR,会在后续找时间进行专门的整理和解说。

PS:行家一看便知,本文的讲述非常基础,主要涉及的也是Serdes最常识的概念和理论。尽管如此,行文、逻辑依然或许存在不合适,甚至错误。诚请专家不吝指正。

/END

敬请期待 - “一个底层配置问题导致的PCIe灾难”

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-20
  • 2022-12-23
  • 2021-07-31
  • 2022-12-23
  • 2021-09-02
猜你喜欢
  • 2022-03-09
  • 2021-10-13
  • 2021-10-20
  • 2021-10-31
  • 2021-10-27
  • 2021-11-28
相关资源
相似解决方案