GTH 高速串行通信光口64B66B编码通信方案分享

什么是64b/66b 编码技术?

64b/66b编码技术是IEEE 802.3 工作组为10G 以太网提出的,目的是减少编码开销,降低硬件的复杂性,并作为8b/10b编码的另一种选择,以支持新的程序和数据。当前,64b/66b编码主要应用于Fiber Channel 10GFC和16GFC、10G 以太网、100G 以太网、10G EPON、InfiniBand、Thunderbolt 和 Xilinx 的 Aurora 协议。

64b/66b 编码基础知识

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。

1.JPG

注:此外还有 Block Type 为 0x2d,0x66,0x55,0x4b 等情况没有列出。不同的协议的格式可能不尽相同,具体应以协议的 Spec 为准。

64b/66b 编码过程如下图所示:

2.png

64b/66b 与 8b/10b 的简单比较如下图所示:

3.png

需要注意的是,64b/66b 编码没有办法限制 Run Length(即数据流中的连续的 0 或者连续的 1 长度)到一个比较小的值,只能通过选择合适的多项式来取得相对最优的 DC Balance 和相对较低的较大值得 Run Length 的概率。显然,采用 64b/66b 编码,对串行收发器的 CDR 提出了非常高的要求。

Xilinx Aurora 协议

TX 同步齿轮箱位和字节排序

下图显示了使用 4 字节逻辑接口(TX_DATA_WIDTH=32(4 字节)、TX_INT_DATAWIDTH=1(4 字节)时,用于64B/66B 编码的数据进入和退出 TX 齿轮箱的前四个周期的示例))在正常模式下(GEARBOX_MODE[2]=1'b0)。输入由 2 位标头和 32 位数据组成。

在第一个周期,标头和 30 位数据退出 TX 变速箱。在第二个周期,来自前一个周期的 TXDATA 输入的剩余两个数据位以及来自当前 TXDATA 输入的 30 个数据位退出 TX 齿轮箱。在第三个周期,TX 变速箱的输出包含来自第一个 66 位块的两个剩余数据位、第二个 66 位块的标头以及来自第二个 66 位块的 28 个数据位。

4.png

TX 同步齿轮箱位

TX 同步齿轮箱需要使用必须在互连逻辑中实现的外部序列计数器。TX 变速箱支持互连逻辑的 2 字节、4 字节、8 字节和 16 字节接口。

如图所示,在正常模式下(GEARBOX_MODE[2]=1),外部序列计数器操作模式使用 TXSEQUENCE[6:0]、TXDATA[127:0] 和 TXHEADER[5:0] 输 入 。当 使 用 CAUI 接 口 时 (GEARBOX_MODE[2]=1'b1) ,也会使用TXHEADER[5:3]。用户逻辑中必须存在二进制计数器才能驱动 TXSEQUENCE 端口。对于 64B/66B 编码,计数器从 0 递增到 32,并从 0 重复。对于 64B/67B 编码,计数器从 0 递增到 66,并从 0 重复。

使用64B/66B 编码时,将TXSQUENCE[6]连接至逻辑0,并将未使用的 TXHEADER 位连接至逻辑0。当使用CAUI 接口并选择64B/66B编码 (GEARBOX_MODE) 时,TXHEADER[5]必须连接至逻辑0[2]=1'b1,GEARBOX_MODE[0]=1'b1)。

对于2字节、4字节、8字节和 16字节接口,序列计数器增量范围({0到32}、{0到66})相同。然而,当使用TX_DATA_WIDTH 与 TX_INT_DATAWIDTH 相同的模式时,计数器必须每两个 TXUSRCLK2 周期递增一次(例如,4 字节互连逻辑接口(TX_DATA_WIDTH=32)和 4 字节内部数据宽度(TX_INT_DATAWIDTH=1))。

5.png

由于 64B/66B 和 64B/67B 编码方案以及 TX 同步变速箱的性质,用户数据在各种序列计数器值期间被保留(暂停)。在 TX_DATA_WIDTH 和 TX_INT_DATAWIDTH 相同的模式下,数据暂停两个 TXUSRCLK2 周期;在TX_DATA_WIDTH 是 TX_INT_DATAWIDTH 两倍的模式下,数据暂停 1 个 TXUSRCLK2 周期。有效数据传输在下一个 TXUSRCLK2 周期恢复。下表描述了各种模式的 TXSEQUENCE 暂停位置(仅 64B66B)。

6.png

如下图所示,当在外部序列计数器模式下使用 8 字节互连逻辑接口和 4 字节内部数据路径并在正常模式下使用64B/66B 编码时,计数器值 32 处发生暂停。该要求仅仅是对同步编码模式有要求,异步编码器并没有这个要求。

7.png

 UltraScale FPGAs Transceivers Wizard IP 核设置

首先创建一个工程,添加 UltraScale FPGAs Transceivers Wizard IP

8.png

Transceiver 配置

Transceiver 配置预设:UltraScale FPGAs Transceivers Wizard IP 提供了一些标准的预设配置可供选择,比如 aurora8B/10B、aurora 64B/66B、3G-SDI、12G_SDI 等配置,在应用预设后,还可以根据特定系统的需求进行进一步的修改。如果需要全部进行自定义配置,可以将这个选项设置为“Start from scratch”。

9.png

这里的预设配置选择 GTH-Aurora_64B66B 即可。串行收发器类型取决于使用的具体设备,以 MZU07A 板卡为例,它的 SFP+仅支持 GTH 类型。

10.png

载入预设的配置

11.png

Transmitter 框架

• Line rate (Gb/s):设置发送端的线路速率为 10.3125Gbps,可用范围取决于收发器类型。7 series 系列的 GTP 最高支持 6.6Gbps,GTX 最高支持 12.5Gbps,ultrascale+系列的 GTH 收发器最高支持 16.3Gbps(这边要特别注意一下,sfvc784封装的芯片 GTH 最高支持 12.5Gbps),GTY 最高支持 32.75Gbps。

12.png

13.png

• PLL type:

用于为启用的串行收发器通道的发送器提供时钟的所需 PLL 类型。可以看到选择 QPLL0,QPLL1 和 CPLL,针对于 ultrascale 系列的 GTH 收发器,他们的标称的工作范围如下:CPLL(2.0~6.25Gbps)、QPLL0(9.8~16.375Gbps)、QPLL1(8~13Gbps)。

• QPLL Fractional-N options:

针对 QPLL 的设备中去支持分数 N 反馈分频器的配置,可选值为 0 到 16777215,其中 0 禁用小数 N 进制运算。

• Actual reference clock(MHz):

选择实际的频率作为参考时钟,提供给选定的 PLL,以满足 line_rate 的需求。

14.png

• Encoding:

选择收发器在传输数据时应用的编码类型或数据格式处理方式,这里选择 sync:gearbox 64B/66B 的编码格式,sync 为同步编码模式,async 为异步编码模式,我们以介绍同步编码模式为主,但是也提供异步编码模式的 demo,有需要的可以自行去学习。

• User data width:

设置每个串行收发器通道的外部用户数据宽度为 64。

• Internal data width:

设置每个串行收发器通道内部发送端的数据路径位宽为 32。

• Buffer:

这边官方默认推荐启用 buffer。

• TXOUTCLK source:

选择 TXOUTCLKPMA 即可,TXOUTCLKPMA 是 TX 相位插值器后的分频锁相环时钟,由 TX PCS 模块使用,当锁相环被一个相关的复位信号复位时,该时钟被中断。不建议使用 TXOUTCLKPCS,因为它会引起 PCS 模块的额外延迟。

15.png

更多关于 高速串行通信光口通信方案的资料(附带源码),在下方链接中:

https://pan.baidu.com/s/1i1Sw-QCEjR4E6lkrnju-OA?pwd=1nqz   

本方案使用到的应用平台为:MLK-F22-CM03-7EV

16.png

本文转载自:米联客

最新文章

最新文章