高速serdes技术学习总结

Overview

本身接触过许多家的高速serdes,无奈数学基础太差,只能像乌鱼爬同样,一点一点的积累知识和经验,这里把平日里学到的点点滴滴记录下来,但愿对本身和同事有所帮助。算法

基础知识 (摘录自李闻界老师的讲课内容)

Channel的特性

channel的特性。这里第一张图给出了三种它的传输函数,或者说它的s21。在不一样的长度,loss区别很大。咱们看到第一个蓝色的,它的loss就会比较小,在2.5Gbps时loss大概不到5db;而红色的这种比较长,它的loss在2.5Gbps的时候就有10个dB多一些。这个绿色的一根线,它不光loss多一点,还在10Gbps时有一个不好的一个点的loss,到-60多dB。
通常在设计的时候,会拿一个channel的model通常是Sparameter或者是LGC这种model,而后在前仿真/后仿真去验证咱们的design。
图片描述
从它的冲击响应能够看到红色的在4ns前面一点开始上升,好比说在4ns前一点去sample它,那么能够获得一个数据。可是在后面,好比说4ns多一点的时候去sample它,也可能获得1个1,原本应该是获得了1个0,这就会产生一个错误的数据。
单位冲激响应叠加以后,就会产生一个眼图。或者在PRBS的输入下,折叠输出以后会获得一个眼图。咱们看到这个眼图在不一样的channel上它的opening,就是高度、宽度差异很是大的编程

SerDes的基本结构

SerDes的基本结构图。前面就是把并行数据转换成串行数据(通常也叫MUX),而后再给TX发送出去。由于channel本征阻抗是50Ω,因此TX这边加一个termination,50Ω的特征阻抗来保证阻抗匹配。Rx这边一样加一个50Ω特征阻抗来保证匹配,这样才没有反射。而后RX和TX这边分别有负责时序的,好比说PLL和Timing Recovery,这些模块专门为这些电路提供clock。
图片描述
把它能够分红两个主要部分,第一部分就是timing,为发送和接收数据提供clock;第二部分就是signaling,就是信号处理。TX边主要是把数据发送出去保证必定的眼高,而后Rx这边把数据恢复出来。由于channel loss以后,signal多是看不到的。这就说RX主要作两件事,既要恢复数据、又要恢复时序。恢复数据就是要知道是0仍是,对于这种PAM 2也就是NRZ类数据来讲。而且要找到怎么去、在哪一个时间点上去sample这个data,也就是恢复出一个最好的timing。Rx clock的上升沿采在这个数据它的正中间,这样通常是最好的。
图片描述函数

Jitter

data上面的jitter其实不是那么在意,只要保证setuptime、hold time,而clock上的jitter就相当重要。post

发送端的VCO

RING VCO,通常来讲可能在5GHz的clock能作到1.5ps的RMS Jitter。有可能会作的更好,但问题是功耗在继续增长。
对于PAM4来讲,它的eye opening会更小,由于它的上升沿有不一样transition,这样PAM4的eye opening会小30%。这里的30%具体指的是EYE的宽度,另外EYE的高度比较明显的会小1/3,也就是9.5dB。
对于14GHz的clock或者28Gbps datarate来讲,用RING产生时钟比较困难,而且对这种data rate,jitter要求会更高。好比说RMS jitter 0.2ps,这时候大概占UI的11%。在高频的时候,数据恢复这边(signaling)也会更困难,因此要尽可能保证这边的Jitter margin多留一点。性能

接收端的CDR

另一部分就是在RX的timing recovery。CDR的主要目的就是找到一个最好的sample点,使得sample的数据尽可能是对准数据的中心店,也就是说BER尽可能的小。
CDR的主要性能就是jitter tolerance,它能够track PLL的一部分jitter。还有就是CDR的bandwidth和它的功耗,bandwidth越高功耗就要更高。ui

发送和接收的均衡(EQ)

数据处理主要是均衡器,TX这边叫emphasis,或者叫FFE。RX这边的均衡器会比较多一些,好比说CTLE。有有源的、无源的,可能还会有些其它的滤波器。而后最重要的还有DEF,它有各类结构。
图片描述spa

TX FFE

若是channel的insertion loss特别小(<15dB),TX那边直接把信号给发送出来,经过一个50Ω的阻抗匹配。而后RX这边有个50Ω的阻抗匹配,最后直接一个比较器就把它收过来了,这样也是能够的。
可是,当channel的insertion loss比较大(>25dB)的时候,这个问题就十分重要了,TX FFE可使得频率响应曲线变得平坦,减小ISI。TX输出阻抗和RX端口阻抗要保证50Ω来匹配channel的阻抗,保证没有反射。
在下面的三张图表示均衡器的做用。好比说,Channel一开始时随着频率升高loss愈来愈大的,可是若是在5GHz的点给一个gain,而在低频时候没有gain。这样就把5GHz这个频点给boost上去,看到第三张图绿色的这个就显得比较平坦,这样的ISI就会小。
图片描述
TX端的Equalization是TX的equalization。通常用4-tap FFE,除了一个主的之外,前面有一个,后面还有个POST一、POST2,而后都加在一块儿后通过50Ω输出。
看一下TX FFE的做用,它是如何消除ISI的。若是没有FFE就是没有post-emphasis。那么data出来以后高频的信号就变得小。而若是有第一个post的emphasis,能够看到第二张图红色的输出的响应,高频的信号明显变大了,低频信号稍微小一点
图片描述设计

RX CTLE

Rx的均衡技术。第一个就是CTLE,连续时间线性均衡器。它主要来补偿channel对高频信号的insertion loss。它是一种无源的,只有RC或者有L。无源的就意味着没有Gain。它只能把低频的减弱,把高平的相对来讲是增高能量。而且无源design有个好处就是它不会产生noise,除了R会产生的noise,可是通常来讲R会比较小。而晶体管的noise相对多一些。
CTLE通常是RX的第一级。
在奈奎斯特频率,CTLE通常都会有一些Gain。这样后边的noise就不那么敏感了,好比后面VGA、DFE、sampler。
CTLE通常都是采用可编程的CS、RS,由于channel都不同,甚至有时还会有自适应算法来自动配置RS、CS(有待商榷??)。
下图中的fp1就是Nyquist频率,对于10Gbps的baud rate而言,fp1=5GHz。
图片描述3d

RX DFE

图片描述

DFE技术(decisionfeedback equalization)code

  1. decision,决定输入的数据是1仍是0
  2. feedback。也就是说它把这个收到的数据,经过一条链路返回到输入,而后再输入上直接减掉一些信息。那么减掉的量的多少,也就是它输入的数据会乘以一个系数。它减掉多少电压,就是这个信号的加权(W)是多少。
  3. 非线性,channel就是非线性的,不少时候非线性还很是大

因此总结下来,DFE包含3点,一个就是decision,第二个就是feedback,而后第三个就是它非线性。
图片描述

这里有两个channel,这两个channel的insertion loss不同,那么接收端的DFE就要自适应这两个channel。而且通常的自适应电路是always on,用它来去cover一些电路或者是那些channel的温飘效应获得。自适应的话就须要额外的比较器,而且一直工做。
图片描述

知识点进阶

不一样介质的冲击响应曲线

  • PCB Backplane的冲击响应曲线相似像泊松分布
  • Fiber Optic的冲击响应曲线相似高斯正态分布
  • DAC的冲击响应曲线则介于上面二者之间

Nyquist频率

通常对于10Gbps信号咱们用@5GHz Nyquist频率来看它的Insertion Loss点,25.78125Gbps速率的信号用12.89GHz
以25.78125Gbps速率信号为例,serdes内部的恢复时钟不会是25.78125GHz,由于这样时钟信号过高了,只会恢复出12.89GHz的时钟,而后经过移相90度,对于25.78125Gbps这么高速信号,通常只会sample一个点
对于10Gbps信号,会用2个不一样相位的时钟(0相位的5GHz,和移相90度的5GHz)采样4个点。
另外,能够把25.78125Gbps速率的信号接入到频率分析仪的输入端,能够看到它的能量最大的频点是12.89GHz,因此这也能够说明内部恢复出来的时钟不是25.78125GHz,而是12.89GHz.

CDR的类型

Muller-Muller
Bang-Bang

  • CDR其实反而喜欢信号有ISI,若是没有任何ISI,那么CDR确定会失锁CDR锁定的点是在H(-1)和H(1)之间。
  • Muller-Muller CDR两边的采样点是在一半Peak的电平处,Bang-Bang会高一些。
  • CDR带宽的需求, CDR支持的带宽主要取决于CDR可以跟踪抖动的速度,速率过高的jitter,CDR没法跟踪,这是因为CDR的反馈是从FFE或者DFE以后过来的,Latency比较大,因此通常CDR只能follow 4MHz的Jitter,有的厂商的实现比较特别,为CDR特别设计了3个dedicated tap的FFE(pre, main , post),不和data共用,因此latency特别小,能够作到10MHz的带宽
  • CDR的RMS jitter是经过phase noise的各个点作积分,计算每一个点链接的折线下面的面积。

ISI

  • FFE通常能够configurable,分配多少个Tap给Pre,多少个Tap给Post,1个给Main, 好比16个tap, H0~H3分配给Pre, H4给Main, H5~H15分配给Post
  • H0~H3的规律,若是Main是正的, H3(-), H2(+), H1(-), H0(+),实际上H1和H0每每是0,若是H3(-)的绝对值> 30%*Main, 说明对端发送的Pre须要增强一些
  • H5~H15的规律, 若是Main是正的, H5~H15不像pre那样会bounce,通常都是正的或者都是负的,一样的若是H5的绝对值 > 30%*Main,那么说明对端发送的Post须要增强一些
  • CTLE, 通常靠手工配置,根据信道的loss来配置相应的值,信道的插损越大,CTLE须要配置的peaking值越大,以保证CTLE的输出知足VGA的输入要求。CTLE主要是压低低频信号,等效于放大高频信号,第一个主要极点是放大Nyquist频率点。有的设计还把CTLE细分红LFP, MFP, HFP

接收端眼图的测量

  • 接收端眼图的眼图的测量通常位于FFE或者DFE以后,接收端眼图的外眼表征的是低频信号的幅度,内眼表征的是高频信号的幅度。通常只能sample外眼的眼高和眼宽,若是外眼的眼高已经很小,那么内眼的幅度就更小了。因此能够经过外眼的眼高间接的推断出内眼(高频份量)的幅度
  • 有的时候,尽管接收的眼图幅度很大,可是宽度很小,这是因为FFE和DFE补偿过头了,这时光看眼高不足以判断接收信号质量的好坏,还必须经过眼宽的数值来综合判断。然而,每每在56G速率以上,眼宽应该比较难以采样。

FFE和DFE比较

  • FFE是非因果关系,对于发送端而言,它能够预先知道下面一个或者几个要发送的bit信号是“0”仍是"1",这样才能够消除Pre的ISI。而后对于接收端而言,它没法知道下面要接收的一个或者多个bit信号是"0"仍是“1”,全部在接收端实现FFE的serdes都玩了一个trick,就是把ADC以后的串行码流延迟几个cycle,好比延迟4个cycle,获得bit0, bit1, ... bit[N], 而后把"如今"的bit时间点指向bit4,这样就知道"将来"要接收的bit0..3是"0"仍是"1"了。FFE能够出了不会有错误传递以外,还可以补偿pre的ISI干扰
  • DFE是因果关系,对于post的ISI干扰补偿很是有效,可是对于pre的ISI干扰无能为力,同时级数多了,会致使错误传递,即多个bit的burst错误。因此56G及之后的serdes,多采用FFE以后只有1个tap的DFE设计

如何调节TX FFE参数

  • 根据scope测量的眼图来调节,对于Insertion Loss比较大的信道,要相应增长pre-emphsis和post-emphasis。其实是作de-emphasis,即变相压低低频信号的幅度,来实现加强高频信号的幅度
  • 根据接收端的眼图来调整:

    • 若是发现最靠近main Cursor的第一级pre-cursor,称为H(-1)的绝对值 > 1/3*Main绝对值,那么说明发送端的pre-cursor须要适当增长,若是适当增长了发送端的pre-cursor以后,发现接收端的FFE的H(-1)的绝对值下降下来了,说明调整有效
    • 若是发现最靠近main Cursor的第一级post-cursor,称为H(+1)的绝对值 > 1/3*Main绝对值,那么说明发送端的post-cursor须要适当增长,若是适当增长了发送端的post-cursor以后,发现接收端的FFE/DFE的H(+1)的绝对值下降下来了,说明调整有效
    • 若是发现接收端的VGA的peaking值(放大倍数)已经达到了极限值,那么说明接收信号的幅度太小,接收端须要拼命加大VGA的放大倍数,把信号调整到适合ADC的输入端(典型的400mv~500mv),这是须要相应调整发送端的Main或者Amplitude,若是发现接收端的VGA的peaking值相应下降了,说明调整有效
  • 根据接收端的BER来作相应的调整

如何调整RX参数

  • 接收端虽然有不少模块用于EQ,可是通常只有CTLE是手工配置的,VGA, FFE和DFE都是靠算法自动调节的。CTLE须要事先根据信道的Insertion Loss配置相应的值,CTLE的最主要做用是压低低频信号,等效于放大高频信号(实际没法放大,由于CTLE通常是无源的)

关于re-timer或者repeater的做用

高速串行信号通过一段距离传输以后,每每在接收端每一个bit信号的信号宽度会发生变化,好比发送端发送 1111_0_1111, 这样在接收端的"0"这个数据bit的信号宽度就会特别窄,极可能时钟没法对准信号的中间采样,致使误码。通过re-timer或者repeater的信号从新整形以后,把过窄的信号宽度从新整造成1个UI,而后再发送出去,这样后续的接收器就不容易出错

眼图预加剧: Pre-cursor and Post-cursor1,2,3

post-cursor和pre-cursor名称中的post和pre的由来:

  • “post”是指数据"0" -> "1"或者"1" -> "0"跳变以后的预加剧
  • “pre”是指数据"0" -> "1"或者"1" -> "0"跳变以前的预加剧

图片描述

参考文献

  1. 模拟混合信号设计验证的讲课,谢谢李闻界老师的扫盲课程: serdes Introduction
相关文章
相关标签/搜索