跳转至

高速串行通信

介绍

历史上,芯片间的传输接口经历了串行到并行再到串行的过程。从串行到并行,是因为并行接口同时传输多路数据,可以得到更高的带宽。从并行再回到串行,是因为随着并行信号数增大,PCB 走线愈发困难,串扰问题愈发严重,难以继续扩展并行接口的宽度。另一方面,随着技术的发展,串行通信发展出了新的技术,实现了更高的速度,因此又从并行回到了串行。

其中发挥重要作用的是 SerDes,它实现了串并转换:在发送端,把芯片内部的并行数据转换为串行数据输出;在接收端,把串行数据输入转换为芯片内部的并行数据。

参考资料:From Parallel to Serial and Back Again: Understanding SerDes

串行通信

为了实现高速的串行通信,需要很多技术来保证高频率下数据的正常传输:

  1. 差分信号传输
  2. 内嵌时钟以及时钟恢复
  3. 数据编码
  4. 预加重和均衡:

常见的 SerDes 速率有:3.125 Gb/s,6 Gb/s,10 Gb/s,28 GB/s,56 GB/s 和 112 Gb/s。这是经过数据编码后的速率,因此实际传输的数据速率还要减去一部分。

很多高速协议采用了串行通信:

  • PCIe
  • USB 3
  • Ethernet
  • SGMII
  • Infiniband
  • SATA/SAS

常见的数据编码方式有 4b/5b,8b/10b,64/66b 和 128/130b。4b/5b 的意思就是每 4 bit 的数据会被编码成 5 bit,其他也是类似。编码后,保证 1 和 0 的个数基本相同,并且保证了有足够的边沿用于时钟恢复,此时就不需要额外传输时钟信号了,接收侧从数据中恢复时钟并且采样。

预先加重和均衡解决的是传输过程中高频信号的衰减:既然传输过程中对高频信号衰减的比较厉害,那就在发送的时候预先增加高频信号分量;均衡则是在接收端进行滤波,把想要的频率过滤出来。

当接口需要更高带宽的时候,通常就是组合多个 SerDes,例如 PCIe x1 就是 Serdes 一收一发;PCIe x16 就是 SerDes 十六收十六发。

下面列举一些高速串行通信协议采用的技术:

  1. PCIe 1.0-2.0: NRZ, 8b/10b
  2. PCIe 3.0-5.0: NRZ, 128b/130b
  3. PCIe 6.0: PAM-4, FEC, 242B/256B FLIT
  4. HDMI 1.0-2.0:8b/10b
  5. HDMI 2.1:16b/18b, FEC
  6. DisplayPort 1.0-1.4:8b/10b
  7. DisplayPort 2.0-2.1:128b/132b, FEC
  8. SGMII:8b/10b
  9. SATA:8b/10b
  10. SAS 1-3:8b/10b
  11. SAS 4:128b/150b, FEC

评论