1、设计前提
受限于结构设计的原因,计算机主板与PCIe设备之间的距离达到了70cm,因此为保证传输速率能在2.5GT/s以上,则需重新考虑如何保证高速信号能在最低失真情况下实时传输,故开始本设计。
2、PCIe信号的对比
图1 PCIe正常信号波形
图2 PCIe失真信号波形
3、高速信号传输的挑战
4、解决办法对比
图3 两种传输方法对比
通过以上的信息我们可以知道在这个实际项目中如果采用PCB的方式进行高速信号的传输,不仅会带来信号质量的下降,同时通信速率也会大打折扣,另外从成本上考虑,70cm以上的PCB成本也将是一个考虑,对于这种2.5GT/s以上的信号,普通的PCB板材是不能够满足要求的。
5、方案选择
从上面的Redriver和Retimer的性能对比,最终考虑选择采用Redriver的方式作为本次设计的方案。
这里选用美信半导体的MAX14954,它就是采用的Redriver的方式进行PCIe信号传输的。下面是它的一部分简介。
图4 MAX14954官方简介
从最开始的设计需求我们可以知道,在本次设计中只需要满足最低的2.5GT/s,那么也就是PCIe Gen I(2.5GT/s)的数据速率。MAX14954最多满足PCIe x4的信号缓冲,即它有四组差分端口。
6、硬件设计
图5 PCIe缓冲卡设计框图
本设计采用两片MAX14954分别作为PCIe x4的发送端信号缓冲和PCIe x4的接收端信号的缓冲。以下是基于MAX14954的硬件设计。单片MAX14954的差分端连续电流在200mA左右,其工作电压在3.0V~3.6V之间
图6 MAX14954简易框图
图7 PCIe发送端缓冲硬件设计
图8 PCIe接收端缓冲硬件设计
其中电源部分采用的是ADI公司的ADP7104ARDZ-3.3-R7,它是一款CMOS LDO,其电压输入范围在3.3V~20V,最大输出电流为500mA。这里选择的芯片是直接输出3.3V,则它不需要额外电路即可直接给MAX14954供电。下面是ADP7104的硬件设计设计。
图9 ADP7014 LDO硬件设计
这里可能有人会问为什么不采用一个电源芯片直接给两个MAX14954芯片供电。实际上是可以采用一片电源芯片进行供电的,只要单片电流满足两片MAX14954工作电流和PCIe外设板卡的供电电流即可。我这里采用两片单独的电源芯片主要是验证从PCIe设备与PCIe主机之间如果存在不确定的上电关系情况下是否PCIe外设能被总线扫描到的问题。但从实际的工作中,PCIe从设备是能够被PCIe总线给扫描的,不存在无法扫描设备的问题。
大家在设计这一块的时候还是尽量不要采用我这种分开供电的方式,因为容易造成PCIe外设无法被PCIe总线扫描的问题。一定要多注意它们之间的时序关系。
PCIe缓冲板卡的设计就这么多,但是这个效果还是十分明显的,在没有增加缓冲卡之前,PCIe外设卡只能延长20cm就会造成传输不稳定的问题,但是增加了这个缓冲卡之后直接可以将PCIe缓冲卡延长至90cm,但是需要注意的是此时的通信速率最高仅2.5GT/s。若要保证数据速率还是需要将传输线减短或通过增加缓冲级完成。
7、成品展示