一、8B10B编码概念
参考https://mp.weixin.qq.com/s/pL6qvJwilUKSH_izPpvVpQ
- 何为编码,编码就是信息从一种形式或格式转换为另一种形式的过程,例如用1表示3.3V,再例如我们熟知的ASCII码都是编码。8B/10B编码也是一种编码,我们可以简单的理解为用一个位宽10bit的数据来表示一个位宽为8bit数据的编码方式,但这种理解是直观的感受,更是粗浅的解释。
- 8B/10B编码其实不仅提供给我们将8bit数据用10bit表示这样一种编码方式,更重要的是为我们高速串行传输提供了一种链路控制方式,因为它是一种信道编码技术。
- 这里又涉及到一共新的名词,信道编码。信道编码是一门学科,代表人物有香农前辈、汉明码的发明人Hamming等,编码技术也是不胜枚举,曼切斯特编码、卷积码以及我们要说的8B/10B编码等等。信道编码又称之为线路编码,还可以称之为差错控制编码,其目的就是消除信号在传输过程中的干扰,让信号更干净,接收端能够准确的解析出来。所以8B/10B编码就是为实现上述目的所提供的一种编码方式。
二、高速串行通信需要解决的问题
高速串行通讯的实现有这样两个难点:
- 如何保证数据在传输中的质量
- 是接收端如何从01中将数据恢复出来。
当然,完成这项任务不是8B/10B编码一人就可以解决的。
8B/10B编码的主要贡献有两个方面:
- 尽可能的保证串行数据流中的0和1平衡
- 提供控制字符
下面我们就从这两个方面来展开阐述。
保证0、1平衡,也就是0和1的个数差不多,再换句话说就是高电平和低电平的持续时间差不多。专用的说法叫直流平衡或者说DC平衡。为什么需要DC平衡呢,这和高速串行通讯物理实现方式有关。 对于高速信号的处理,可以使用直流耦合和交流耦合,对于高速串行通讯,若要实现远距离通讯或者光通讯,则只能使用交流耦合的方式。例如Xilinx的高速串行通讯模块GTP、GTX等,都有模拟前端AFE,就是电流模式高速输入差分缓冲器。
如PCIE传输线:中间会有一个电容