[FPGA 实现及PCIe IP 核知识点]DFE-码间干扰的克星还是救星?-FPGA常见问题社区-FPGA CPLD-ChipDebug

[FPGA 实现及PCIe IP 核知识点]DFE-码间干扰的克星还是救星?

作者: Tarzan
(本文介绍了DFE的基本概念和工作原理)

DFE是Decision Feedback Equalizer的缩写,为了了解DFE的工作原理,我们首先要稍微复习一下传输线(Transmission Line)。虽然DFE也可以被用在其他的传输领域。

我们假设两个芯片之间需要进行通信,芯片与芯片之间采用传输线进行连接,比较常见的传输线例如PCB(Printed Circuit Board)上的连接线。随着芯片接口速度的不断提升,通信变得越来越困难。例如本文写作的时候串行链路的data rate商用化的已经超过了32Gbps (NRZ*调制)。其中,比较关键的原因是担任传输任务的PCB信道带宽的限制。虽然近些年也有mid low loss和ultra low loss的PCB材料的出现,但性价比并没有跟上接口速率的步伐。如何在信道带宽较低的PCB材质上跑更高的速率一直都是大家关心的话题之一。

下面我们来看看典型的FR4(PCB的一种材质)的衰减vs频率的图示。

1.png

从图上可以直接得出以下结论:

固定长度的传输线的衰减会随着传输信号频率的增加而增加(负的越大代表衰减越大)

相同频率的时候,传输线的衰减随着长度的增加而增加(所以传输线越短衰减越少)

典型的传输线从理论分析,具备以下特征:

因传输线的电容特性,传输线可以近似于低通滤波,即信号中的高频分量衰减要更大,这和前面看到的结果一致。

因趋肤效应以及介质损耗,都与信号频率相关,且趋势与#1一致。

如果传输线上有连接器,过孔,或者是传输线截面形状不一致,那么会导致传输线阻抗不连续,不连续的地方都会导致信号发生反射,从而导致该频点衰减更大。所以在上面的图中可以看到衰减曲线突然跌落的情况。

下面作为芯片与芯片之间通过传输线进行传输,我们可以通过一个架构图来体现:

2.png

假设传输线信道是线性时不变系统(LTI*),即具备叠加属性和移不变属性。那么一个pulse(单位方波脉冲)的信号通过传输线后会产生如下变化:

3.png

图中可以看出,由于传输线特性的影响,原本的pulse在通过传输线后:边沿开始退化,即pulse的高频分量衰减比低频分量严重,请参考傅里叶变换相关内容理解。

因此,信号超越了它本身的边界,对前后bit都产生了影响。这种影响被取名叫码间干扰(Inter-Symbol Interference)。如果某个时刻T0时的信号,对其前面发送的bit产生影响的部分被称为Pre-cusor,对其后面发送的bit产生影响的部分被称为Post-cursor。如图所示。

4.png

下面我们看看当发送1011b这个Pattern的时候,实际上接收端真正的波形会有怎样的变化?

5.png

下面是仿真的PRBS码流通过传输线后的波形:

6.png

可以看出,由于传输线的影响,波形变化非常大,这将直接影响Receiver的接收质量。

由于某个时刻bit的幅值,会受到之前接收到bits的影响。于是有一种设计思路是收集某个时刻之前接收到的bit的信息,根据这些信息,计算出对当前接收bit的幅值影响,然后叠加上去。这样一来,当前时刻之前的bits对该bit的影响就降到了最低,一定程度上改善了ISI的影响。

下面我们按照刚刚的思路首先解决当前bit前一个bit对自己的影响,如图所示:

7.png

假设发送端发送了两个bit,第一个发送的是bit A,第二个发送的是bit B。我们如何求出bit A对bitB的幅值的影响?

我们可以将bit A延迟一个bit的时间T,然后反转极性。即如果bit A是逻辑1的话,我们应该将bit B的幅值降低一些,因为bit A的post cursor是正向的,所以我们要减去。如果bit A是逻辑0的时候则相反。需要注意的是如果发送端不是采用差分对,而是单端的情况,那么作为逻辑0对后面bit是没有影响的。我们这里假设采用的是差分对的情况。那么逻辑0和1的处理方式正好相反。

当得到了修正的方向,接下来则要计算修正的值了。此时我们可以通过调整某个系数来逼近这个值。在实际IC设计中,该值由接收端通过自适应的方法收敛得到,理论上表示bit A在通过了一个bit的时间T后,仍然残留在通道中的分量。这个值也被称为bit A的第一个tap分量。

如果我们把上面的设计放到真实的IC设计中去,大家可能会发现很多的问题。比较明显的问题是,bit A很有可能受到更早的bit的影响,从而导致其逻辑0和逻辑1的实际幅值不准确。因此,我们可以用一个slicer来规范其输出值,比较常见的做法可以对延迟后的信号进行采样,高于逻辑1判决的输出逻辑1对应的电平,低于逻辑1判决的输出逻辑0对应的电平。这样一来就有效的避免了因为前一个bit本身不准确而造成的影响。如下图所示:

8.png

接下来就水到渠成了,其实Delay T的时间还要提供Slicer的功能,一个D触发器就可以解决问题,如下图所示:

9.png

以后有机会介绍多tap的情况。

Reference:
PCI Express® Base Specification Revision 5.0 Version 1.0
NRZ : Non Return Zero Code
LTI : Linear time-invariant**



请登录后发表评论

    没有回复内容