Xilinx Aurora 8B/10B IP介绍以及下板验证
一、什么是Aurora协议?
Aurora协议是一种用于FPGA和其他硬件设备之间高速串行数据传输的协议,为物理层提供透明接口;用于在点对点串行链路间移动数据的可扩展轻量级链路层协议,由Xilinx公司开发。它主要用于在FPGA之间、FPGA与处理器之间、或FPGA与其他外部设备之间进行高效的数据通信。Aurora协议是轻量级的,具有高带宽和低延迟的特点,适合用于各种应用场景,如数据中心、通信、视频处理、存储和高性能计算等,Aurora协议通信示意图如下所示:
在两个Aurora核通信中,是通过Lane链接,建立链接后的两个核也叫Aurora Channel Partners;每一条Lane包括一个TX,一个RX,在物理层就是通过GT收发器来传输,具体的GT收发器的配置可以参考《详解Xilinx GTP结构原理以及gtwizard IP的使用并下板验证》这篇文章。多条Lane可以组成一个Channel,类似于Xilinx GT收发器里面四对GT收发器组成一个Quad。
由上图也可以看出用户通过用户接口与Aurora核进行数据交互,Aurora核将用户数据添加链路层协议后再进行8B/10B编码,最后经过GT收发器发送出去。在Xilinx GTP收发器里,单个收发器支持速率为0.5Gbps 至 6.6Gbps;Aurora支持最多16个收发器同时传输,因为8B10B编码有20%的开销,因此Aurora 8B/10B核支持的吞吐量为0.5 * 0.8 = 0.4Gbps 至 6.6* 16 *0.8 = 84.48Gps。
二、Aurora 8B/10B IP核的结构原理
Aurora 8B/10B IP 核心框图如下所示:
- Lane Logic :每一个驱动一个GT(GTP,GTX,GTH)收发器,并且初始化对应的GT收发器和处理控制字符的编码和解码以及错误检测。
- Global Logic:执行通道初始化的绑定和验证阶段。在运行过程中,该模块生成 Aurora 协议所需的随机空闲字符,并监控所有通道逻辑模块是否存在错误。
- RX User Interface:AXI4-Stream RX 用户接口将数据从通道移动到应用程序并执行流控制功能。
- TX User Interface:AXI4-Stream TX 用户界面将数据从应用程序移动到通道并执行流控制 TX 功能。标准时钟补偿模块嵌入在内核中。该模块控制时钟补偿 (CC) 字符的定期传输
总结:Aurora 8B/10B是一个基于GT高速收发器(物理层)的全双工点到点协议,GT高速收发器的每个Channel就是Aurora协议的一条Lane,用户通过AXI4-Stream来向Aurora 8B/10B IP核读写数据。
三、Aurora 8B/10B IP核 延迟开销
Aurora 8B/10B IP的延迟是由协议引擎(编解码、流水线处理、)和GT收发器的管道延迟引起的。随着用户接口数据宽度的增加,协议引擎的延迟也会增加;GT收发器的延迟取决于所选收发器的功能和属性。下图是默认配置下的数据路径的延迟路径:
对于默认核心配置在功能仿真中,从 s_axi_tx_tvalid 到 m_axi_rx_tvalid 的2字节帧设计的最小延迟约为 37 个user_clk 周期,4字节帧设计的最小延迟约41各user_clk周期:
Aurora 8B/10B端口示意图如下所示:
在IP配置界面可以选择大小端模式,选择小端模式( Little Endian Support )后,数据总线上的数据高位在前面,低位在后面,数据格式为[n:0]。选择大端模式( Big Endian Support)后,数据总线上的数据低位在前,高位在后,数据格式为[0:n];在配置IP时,我们大多数选择小端模式,也是符合我们平时的设计习惯。
四、用户数据接口格式
Aurora 8B/10B IP配置可选择帧或流式用户数据接口。
- 帧式用户接口符合AXI4-Stream 协议规范,并包含传输和接收帧式用户数据所需的信号,简单理解就是在AXI4-Stream的基础上添加了帧头、帧尾等控制信号,使得传输更准确,但是会降低传输效率和使用较多资源。
- 流式接口允许发送没有帧分隔符的数据,操作更简单,并且比帧式接口占用更少的资源。数据端口宽度取决于通道宽度和所选通道数;基本上就是一个非常简化的AXI4-Stream接口,只有数据有效、握手和数据信号,此种方式传输效率高,但无法保证传输的准确性
Aurora 8B/10B IP顶层结构实例化了通道逻辑模块、TX 和 RX AXI4-Stream 模块、全局逻辑模块以及收发器的包装器,Example还实例化了时钟、复位电路、帧生成器和检查器模块,如下所示:
4.1 AXI4-Stream 位排序
Aurora 8B/10B IP采用升序排序。它们首先传输和接收最高有效字节的最高有效位,如下图所示:
4.2 帧传输用户端口说明
帧传输用户端口框图如下所示:
端口名称 | 方向 | 时钟域 | 端口说明 |
s_axi_tx_tdata[0:(8n–1)] 或s_axi_tx_tdata[(8n–1):0] | 输入 | user_clk | 输出数据;n表示字节数,由lane数量组成 |
s_axi_tx_tready | 输出 | user_clk | 拉高表示IP准备好接收数据 |
s_axi_tx_tlast | 输入 | user_clk | 拉高表示当前传输的是最后一个数据 |
s_axi_tx_tkeep[0:(n–1)] 或s_axi_tx_tkeep[(n–1):0] | 输入 | user_clk | 指定最后一个数据节拍中的有效字节数 |
s_axi_tx_tvalid | 输入 | user_clk | 拉高表示当前输出的数据有效 |
m_axi_rx_tdata[0:8(n–1)] 或 m_axi_rx_tdata[8(n–1):0] | 输出 | user_clk | 接收到来自GT收发器的数据 |
m_axi_rx_tlast | 输出 | user_clk | 拉高表示当前输出的是最后一个数据 |
m_axi_rx_tkeep[0:(n–1)] 或 m_axi_rx_tkeep[(n–1):0] | 输出 | user_clk | 指定最后一个数据节拍中的有效字节数 |
m_axi_tx_tvalid | 输出 | user_clk | 拉高表示当前输出的数据有效 |
评论记录:
回复评论: