ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

aurora通信xilinx fpga aurora 64B/66B ip核学习记录

aurora通信xilinx fpga aurora 64B/66B ip核学习记录 概述最近学习aurora通信主要介绍了xilinx fpga aurora 64B/66B ip核的使用方法和介绍让我们能够快速的搭建好aurora通信的工程。Aurora 64B/66B介绍Aurora 64B/66B是由赛灵思Xilinx现属AMD开发的一种高性能链路层协议专为在FPGA上实现超高带宽的串行通信而设计。它通过高效的64B/66B编码、简单的用户接口和灵活的拓扑结构为芯片间、板卡间乃至设备间的高速数据传输提供了一套可靠且低开销的解决方案。连接可以是全双工full-duplex的或单工simplex的。Aurora 64B66B IP核支持高级微控制器总线结构Advanced Microcontroller Bus ArchitectureAMBA协议的AXI4-Stream用户接口。一个Aurora 64B/66B核实例可以在GTX、GTH或GTY收发器上使用多达16个有效的连续通路lane以任何支持的线速率运行提供低成本、通用的数据通道吞吐量从500 Mb/s到超过400 Gb/s。-----------------------------------------------图 2-1 Aurora 通信框图-------------------------------------Aurora 64B/66B核心自动初始化一个channel当他们连接到Aurora 64B/66B channel partner。初始化后应用程序可以通过channel以数据帧(frame)或数据流(stream)的形式传递数据。Aurora 64B/66B帧可以是任意大小的并且可以在任何时候被高优先级请求中断。有效数据字节之间的间隙自动填充 idle以保持锁定和防止过度的电磁干扰。在Aurora 64B/66B中流控制(Flow control )是可选的可以用于限制链路伙伴传输数据速率或通过channel发送简短的、高优先级的消息。流(stream)在Aurora 64B/66B中通过一个单个无休止的帧来实现。每当数据没有被传输时就会传输idle以保持链路有效。过多的误bit、断开连接或设备故障将导致IP核复位并尝试初始化一个新的channel。Aurora 64B/66B可以在接收多通路(lane)的通道(channel)时最多支持两个符号偏斜。Aurora 64B/66B协议采用64B/66B编码。64B/66B编码相对8B/10B编码提供了理论上的性能提升因为它的传输开销非常低(3%)而8B/10B编码的传输开销为25%。2.2 aurora 64B/66B IP核配置---------------------------------------图 2-2 Aurora 64B66B IP 核配置1图----------------------------------如上图所示第1部分配置如下aGT_Type: GT口的类型bLine_RateGbps: 链路数据传输速率GbpscColumn_Used: 从下拉列表中选择适当的 GT 列dLanes 选择要在核心中使用的通道数,有效范围取决于所选的目标设备eStarting GT Quad从下拉列表中选择起始通道的起始 GT Quad。 内核配置有连续数量的通道并选择了通道选择选项fStarting GT Lane: 从下拉列表中选择内核的起始通道。 使用起始 Quad、通道和起始通道生成具有连续通道数的核心;gStarting GT Lane: 从下拉列表中选择内核的起始通道。 使用起始 Quad、通道和起始通道生成具有连续通道数的核心;hGT Refclk Selection: 从下拉列表中选择 UltraScale 器件收发器的参考时钟源iGT Refclk: 参考时钟源的频率mhzjINIT clk: 在文本框中输入有效的 INIT 时钟频率kGenerate Aurora without GT:此选项仅适用于 UltraScale 和 UltraScale 设备。 如果选择此选项则生成的 Aurora 内核不带 GT示例设计中提供了 GT。第2部分配置如下aDataflow Mode:选择 Aurora 64B/66B 内核支持的通道方向选项。单工 Aurora 64B/66B 内核具有一个单向串行端口可连接到互补的单工 Aurora 64B/66B 内核。 可用的选项是 RX-only Simplex、TX-only Simplex 和 Duplex。默认值DuplexbInterface: 选择用于内核的数据路径接口类型。 选择成帧以使用允许封装任何长度的数据帧的 AXI4-Stream 接口。 选择 Streaming 以使用简单的 AXI4-Stream 接口通过 Aurora 64B/66B 通道流式传输数据。默认值FramingcFlow ControlFlow Control 选择所需的选项以将流量控制添加到核心。 用户流控制 (UFC) 允许应用程序通过 Aurora 8B/10B 通道发送简短的高优先级消息。本机流量控制 (NFC) 允许全双工接收器调节发送给它们的数据的速率。 立即模式允许在数据帧中插入空闲代码而完成模式仅在完整数据帧之间插入空闲代码可用选项如下• None• UFC• Immediate NFC• Completion NFC• UFC Immediate NFC• UFC Completion NFC默认值无dUSER K选择将 USER K 接口添加到核心。USER-K 块是特殊的单块代码直接传递给用户应用程序。这些块用于实现应用程序特定的控制功能。默认无eLittle Endian Support选择此选项将所有接口更改为小端格式默认情况下核心使用大端格式 ----------------------------------------图 2-3 Aurora 64B66B IP 核配置2图---------------------------------上图中CRC表示选择在数据流中插入 CRC32 的选项上图所示第1部分配置如下aDRP模式选择所需的接口以使用 DRP 控制或监控收发器接口。可用选项包括1、Native 2、 AXI4_Lite 默认值AXI4_LitebVivado Lab Tools选择以将 Vivado 实验室工具添加到 Aurora 64B/66B 核心此选项提供一个调试接口用于显示核心状态信号cAdditional Transceiver Control and Status Ports选择以在核心顶层中包含收发器控制和状态端口。第2部配置保持默认即可。------------------------------------图 2-4 Aurora 64B66B IP 核配置3图-------------------------------------如上图所示选择将收发器通用 PLL 及其逻辑包含在 IP 核中或示例设计中。可选项• 在核心中包含共享逻辑Include Shared Logic in core。• 在示例设计中包含共享逻辑Include Shared Logic in example design。在示例设计中包含共享逻辑Include Shared Logic in example design选择此项可将gt口的参考时钟作为逻辑的内部时钟使用。Single Ended GTREF CLK如果选择GT 参考时钟将成为单端时钟输入。Aurora 64B66B IP核 端口信号可查看Xilinx官方pg074的文档里面有详细介绍。2.3 aurora 64B/66B IP核流数据传输2.3.1 aurora 64B/66B IP核TX流数据传输上图显示了典型的流数据传输开始时两个就绪信号都没有置位这表示用户逻辑和内核都没有准备好传输数据。在下一个时钟周期中ip核通过置位 mgt0_axi_tx_tready来指示它已准备好传输数据。一个周期后用户逻辑置位 mgt0_axi_tx_tvalid信号并将数据放在mgt0_axi_tx_tdata总线上表明它已准备好传输数据。因为现在两个信号都被置位所以上图所示的 Databeat0从用户逻辑传输到内核。Databeat 1 在下一个时钟周期上传输。在IP核置低其 ready 信号 mgt0_axi_tx_tready并且在下一个时钟周期之前不会传输任何数据此时 mgt0_axi_tx_tready信号再次被置位。然后用户在下一个时钟周期上置低 mgt0_axi_tx_tvalid并且在两个信号都被置位之前不会传输任何数据。2.3.2 aurora 64B/66B IP核RX流数据传输上图显示了典型的流数据接收当mgt0_axi_rx_tvalid置位时Databeat0、Databeat1等从内核传输到用户逻辑。2.4 aurora 64B/66B IP 配置示例及上板验证本次示例配置如下a线速率为16.375 Gbpsb发送的数据为递增数从1开始递增cLanes的数量为4 条数据使用流(stream)模式传输Ip核配置截图如下2.4.1 aurora硬件连接示意图通过线缆将两个mgt口连接硬件连接为Mgt0的发送端连接到mgt1的接收端Mgt1的发送端连接到mgt0的接收端。2.4.2 Aurora常用计算公式2.4.2.1 用户时钟计算方式user_clkUser_clk line rate * (64/66)*lanes / data width 。User_clk : 用户时钟line rate :线速率laneslane的数量data width数据的位宽示例本次使用线速率为16.375Gbpslane的数量为4数据位宽为256计算用户时钟为User_clkMhz 16375 * (64/66) *4/256 ≈ 248.1060606 Mhz。2.4.2.2 线速率与GT参考时钟的关系详细描述可参考ug576的文档。如过选择cpll线速率与GT参考时钟的关系如下图所示如过选择qpll线速率与GT参考时钟的关系如下图所示2.4.3 上板验证结果本此验证数据为递增数验证线速率为16.375Gbpsaurora初始化状态后查看mgt0和mgt1状态指示信号都正常。硬件连接为Mgt0的发送端连接到mgt1的接收端Mgt1的发送端连接到mgt0的接收端 从图中我们能够发现接收数据都是递增数并且数据验证模块的err一直拉低说明数据传输正常。2.5 aurora 通信注意事项(1)在aurora的通信中最重要的是二个复位信号一个是reset_pb另一个是pma_init详细的复位顺序可参考xilinx pg074文档的第66页下图是双工的复位顺序。(2)另一个是发送数据时需注意s_axi_tx_treadyAurora 64B/66B核心只有在 s_axi_tx_tready 和 s_axi_tx_tvalid 都被置位时才采样数据。(3)最后需注意5个状态指示信号分别是hard_err、soft_err、channel_up、lane_up、gt_pll_lock。ahard_err检测到严重错误在核心重置之前保持断言。bsoft_err表示在输入的串行数据流中检测到软错误在单个 user_clk 周期内置位。cchannel_up当 Aurora 64B/66B 通道初始化完成且通道准备好发送/接收数据时会触发此断言。dlane_up在每条通道成功初始化后断言每个位表示一条通道。Aurora 64B/66B 核心只有在所有 lane_up 信号被断言后才能接收数据。egt_pll_lock当 tx_out_clk 稳定时断言。模块资源占用情况上图显示了aurora模块在xcku115_flva1517_2_i fpga上所占用资源情况。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进