Aurora 8B/10B IP核详细介绍概述与 64B/66B 版本的简单对比8B/10B编码原理IP核配置Immediate NFCCompletion NFCScrambler/Descrambler概述AURORA 8B/10B 是 Xilinx现 AMD提供的一个免费、轻量级、可扩展的高速串行链路层 IP 核。它基于收发器的 8B/10B 编码用于在 FPGA 之间或 FPGA 与其它芯片之间搭建简单、低延迟、高带宽的数据通道。其主要特点包括8B/10B 编码天然 DC 平衡支使用 8B/10B 编码保证– 最大连续相同码长度不超过 5 个确保时钟恢复CDR稳定物理层无需强制加扰。– 维持 DC 直流平衡避免长时偏压导致信号质量下降。扰码器为可选功能与 AURORA 64B/66B 必须加扰不同8B/10B 版本的 Scrambler 是可选的。当用户数据可能存在周期性重复模式时如稀疏数据或固定填充可以启用它来进一步抑制 EMI、降低离散谱线但绝大多数场景下可以不开启以简化逻辑。灵活的数据通路宽度支持配置为 1、2、4 字节8、16、32 位的用户接口宽度直接匹配 GT 收发器的内部数据位宽如 2 字节模式对接 16-bit 接口无需额外位宽转换延迟最低。宽线速率覆盖支持的线速率范围很广从 数百 Mbps 到 十几 Gbps 以上具体取决于所选 FPGA 的 GT 类型GTP、GTX、GTH、GTY 等。同一 IP 架构可适配不同速度等级的器件。全双工、对称与非对称通道–全双工同时发送和接收。–对称收发速率相同。–非对称单向可配置为只发或只收的单工连接节省资源。– 支持多通道聚合实现带宽绑定。内置流控与错误处理–Native Flow Control接收端缓冲区将满时可向发送端发起暂停请求防止溢出丢包。–自动错误检测能检测 8B/10B 非法码字disparity / invalid code 错误和链路帧错误。– 支持断链重连与自动通道初始化。帧模式与流模式– 帧模式Framing数据被封装在可变长度的帧中通过特定的控制字符标识帧头/帧尾适合传输数据包。– 流模式Streaming纯数据流传输无额外帧封装适合 ADC/DAC 连续采样数据等场景。小资源占用、低延迟协议极为精简没有复杂的 64B/66B 协议栈和块同步器逻辑资源消耗很小。由于编码效率、接口转换极少延迟可低至几十纳秒取决于 GT 延迟特别适合做实时控制或短突发数据传输。多通道绑定Channel Bonding支持将多个物理收发器通道绑定为一个逻辑通道以实现更高总带宽。IP 内部处理通道间的对齐和去偏斜。与 64B/66B 版本的简单对比8B/10B 更适合中等速率、低延迟、简单点对点互连、需要单工或非对称链路、资源敏感的场景。扰码器可选而 64B/66B 必须加扰。编码开销25%每 8 位数据用 10 位传输比 64B/66B 约 3% 的开销大但实现简单。总的来说AURORA 8B/10B IP 是一个成熟、可靠、易于使用的轻量级高速互联方案非常适合在不需要极高线速率和极限带宽效率的场合用最少的开销打通 FPGA 之间的数据通路。8B/10B编码原理8B/10B 编码是一种广泛应用于高速串行数据传输的线路编码方案由 IBM 在 1983 年获得专利。它将 8 位数据映射为 10 位符号symbol在物理链路上传输主要解决两个核心问题直流平衡和时钟恢复。为什么需要 8B/10B直流平衡如果比特流中长期“1”或“0”偏多会造成信号的直流分量漂移经过交流耦合电容隔离时引起基线漂移导致判决错误。8B/10B 通过限制“1”和“0”的数量差异来维持接近零的直流平均。时钟恢复接收端从数据边沿中提取时钟。如果长时间没有跳变连“0”或连“1”时钟会失锁。编码保证了足够高的跳变密度最大连续相同比特不超过 5。编码结构5B/6B 3B/4B8 位原始数据分成两部分低 5 位EDCBA送到5B/6B编码器生成 6 位abcdei。高 3 位HGF送到3B/4B编码器生成 4 位fghj。最终 10 位符号的排列顺序通常是abcdei fghja 为最低位先发送各标准可能有差异但逻辑一致。这样划分既减小了编码表的规模又容易在硬件中实现。运行不一致性Running Disparity, RD这是 8B/10B 保持直流平衡的核心机制。RD 是一个二进制状态变量反映至今发送的比特流中“1”比“0”多还是少RD−当前累积的“0”多于“1”偏负。RD当前累积的“1”多于“0”偏正。每个 10 位符号的“1”和“0”个数之差称为该符号的 disparity不平衡度只能是 2、0、−2。RD 更新规则根据当前 RD选择对应版本的 10 位码字。发送后若该符号的不平衡度为 0RD 保持不变若为 2 或 −2RD 翻转。实际操作中5B/6B 和 3B/4B 子编码器之间会传递一个“中间 RD”共同决定最终码字。这样一来长期发送的“1”和“0”个数差被严格限制在 ±1 之内实现了直流平衡。数据字符D 码和控制字符K 码D 码共 256 个对应普通数据字节记作 Dxx.y。xx 是低 5 位的十进制值0–31y 是高 3 位的值0–7。例如 D0.0 就是数据 8’b0000_0000。K 码共 12 个特殊控制字符用于帧对齐、控制信令等记作 Kxx.y。最著名的 K28.5K28.5又称“逗号字符”comma用于接收端字节对齐。此部分网上资料很多可以自行查找。IP核配置Lane Width: 可选两字节或者四字节。Line Rate: 速率支持0.5Gbps~6.6Gbps,不同FPGA支持速率有细微差别。GT Refclk: 默认值125MHzGT所用参考时钟。INIT clk默认值50MHz初始化所用时钟控制复位时序。GT DRP clk默认值50MHzDRP所用时钟一般用不到。Daraflow Mode: 支持单工和全双工模式本次使用全双工模式。Interface支持Streaming流模式和Framing(帧模式本次使用帧模式帧模式不需要自己解析帧头和帧尾操作简单。Flow Control: 流控模式支持UFC用户流控和NFC原生流控/自然流控此处选择NFC模式Immediate和Completion根据需要自行选择NFC模式接口如上图所示,接口定义如下图所示。Immediate NFCImmediate NFC模式会直接打断对端正在发送的数据使得对端的axi_tx_tready信号直接被拉低若NFC帧配置为XOFF模式对端需要等待接收到XON才可继续发送数据。内容取自我的另一篇文章关于流控波形的介绍Aurora 64B/66B IP NFC流控功能详细介绍若配置为XON模式tdata[8:15]位配置为什么值对端就会暂停发送多少个user_clk周期。并且新的NFC帧会替代旧的NFC帧若XON一直发送固定后期也可以实现XOFF的效果。Completion NFCCompletion NFC模式不会直接打断对端正在发送的数据对端接收到NFC帧后会等待当前发送的数据帧结束才会拉低axi_tx_tready信号XOFF和XON模式和Immediate相同。内容取自我的另一篇文章关于流控波形的介绍Aurora 64B/66B IP NFC流控功能详细介绍Back Channel:–Sidebands: Aurora 8B/10B IP 核为实现可靠的单工通信而提供的精确控制机制。如果你只使用全双工模式可以不关心此选项但进行单工设计时就需要深入了解这组握手信号以确保链路能够稳定建立。–Timer是 Aurora 8B/10B IP 核在单工Simplex 模式下为链路提供的一套基于时间的自动初始化与恢复机制Little Endian Support启用小端模式上面两张NFC的图就是启用小端模式的结果。Scrambler/DescramblerAURORA IP 中的 Scrambler扰码器 和 Descrambler解扰器 是用于处理高速串行链路物理层信号完整性的功能模块。将待发送的数据随机化避免出现连续的“0”或“1”从而保证接收端能够稳定地恢复时钟和数据接收端再用解扰器恢复原始数据。CRC: 报文中带有CRC。Vivado Lab Tools选择以将 Vivado 实验室版添加到 Aurora 64B/66B 核中。参见《 Using Vivado Lab Edition》。此选项提供一个调试界面可显示核的状态信号。Additional Transceiver Control and Status Ports选择将GT控制和状态端口包含在内核顶层中。Scrambler/Descrambler具体作用可以从以下三个层面理解保证时钟数据恢复CDR的稳定性高速串行收发器GTX/GTH等从数据流中提取时钟依赖信号中丰富的跳变沿0→11→0。如果原始数据中存在长串的0或1比如空闲帧、重复的计数器值信号会长时间不跳变导致接收端锁相环漂移甚至失锁产生误码。扰码器通过多项式运算打散数据强制增加跳变密度让 CDR 始终“有钟可循”。降低电磁干扰EMI与频谱扩散周期性的固定数据模式如0xAAAA…会在频谱上产生单根尖锐的谱线造成较强的电磁辐射。扰码后的数据近似于白噪声序列能量被平均分布到更宽的频率范围上峰值功率大幅降低有助于通过 EMI 认证。避免协议相关的“死锁模式”某些特定数据包结构如果恰巧和链路初始化序列或低频控制字相同可能误导接收端的对齐、同步状态机。加扰后几乎不可能出现这种偶然的“特征码”提高了链路的鲁棒性。对于8B/10B 编码本身已保证最大游程长度不超过 5 个相同位并能实现 DC 平衡。扰码器是可选的常用于进一步降低 EMI抑制周期性包引起的离散谱线。64B/66B 编码本身没有足够的跳变密度保证可能存在非常长的全 0 或全 1 情况。扰码器是强制启用的基于 IEEE 802.3ae 的 x^58 x^39 1 多项式是链路稳定工作必不可少的部分。