文章目录
- 前言
- 一、64B66B的实现方式
- 二、64B66B数据帧格式
前言
参考:https://blog.chinaaet.com/justlxy/p/5100064750
64B66B是我们在高速通信协议中的一种处理PHY层发送数据的编码。为何我们要编码,直接把原数据发送出去不行吗?答案是当然不行,我们8B10B中了解到:串行通信中长连1与长连0对接收端恢复时钟造成了很大的挑战,因此我们将8bit的数据扩展到10bit,在1024种编码中精心挑选256种最优码值用于传输,避免的过大的长连1与长连0。这也是我们所说的“直流平衡”。
前面我们介绍过的8B10B编码,它的效率较低,只有80%。64b/66b编码技术是IEEE 802.3工作组为10G以太网提出的,目的是减少编码开销,降低硬件的复杂性,并作为8b/10b编码的另一种选择,以支持新的程序和数据。当前,64b/66b编码主要应用于Fiber Channel 10GFC和16GFC、10G以太网、100G以太网、10G EPON、InfiniBand、Thunderbolt和Xilinx的Aurora协议。
64B66B不像8B10B那样采用一定的规则对8bit的原数据进行编码(采用真值表),每个编码后的数值都有对应前的原码值。64B66B并没有采用直接编码为固定码值的形式,而是采用了一种更加巧妙的方式。大家都知道在通信领域,白噪声、随机序列对我们的意义重大,它的意义就在于0和1是随机出现的,通过对白噪声、随机序列的观察我们得到了一种新的处理长连1和长连0的方式------将数据变成伪随机序列传输。这也是我们常说的加扰/解扰。64B66B采用加扰的方式让数据更接近白噪声,从而达到“直流平衡“的目的。也提高的传输带宽利用率。
一、64B66B的实现方式
64B66B的实现方式依靠加扰/解扰实现。在发送端的PHY层将原始数据进行加扰,然后再通过GT高速收发器发送出去。在接收端将GT接收的数据在PHY层进行解扰恢复出原始数据。
加扰/解扰的实现采用线性反馈移位寄存器(LFSR)实现。
多项式为:X(58) + X(39) + 1;
二、64B66B数据帧格式
64b/66b编码将64bit数据或控制信息编码成66bit块传输,66bit块的前两位表示同步头,主要由于接收端的数据对齐和接收数据位流的同步。同步头有“01”和“10”两种,“01“表示后面的64bit都是数据,“10”表示后面的64bit是数据和控制信息的混合,其中紧挨着同步头的8b是类型域,后面的56bit是控制信息或者数据或者两者的混合。64b/66b编码格式图如下图所示,其中D表示数据编码,每个数据码8bit;Z表示控制码,每个控制码7bit;S表示包的开始,T表示包的结束。S只会出现在8字节中的第0和第4字节,T能够出现在任意的字节。除同步码外,64bit的数据必须经过扰码以后才能进行传输。10G以太网的64b/66b编码所使用的扰码器为X58+X39+1.