学习aurora64/66b.20240703

简介

The AMD LogiCORE™IP Aurora 64B/66B core是一种可扩展的轻量级高数据速率链路层协议,用于高速串行通信。该协议是开放的,可以使用AMD设备技术实现。

Aurora 64B/66B是一种轻量级的串行通信协议,适用于多千兆位链路 (如下图所示)。它用于使用一个或多个GTX、GTH或GTY收发器在设备之间传输数据。连接可以是全双工 (两个方向的数据) 或单工 (任一方向的数据)。

Aurora 64B/66B信道概览

Aurora 64B/66B内核在连接到Aurora64B/66B渠道合作伙伴时会自动初始化渠道。初始化后,应用程序可以通过通道传递数据作为帧或数据流。Aurora 64B/66B框架可以是任何尺寸。高优先级请求能够在任何时间中断这些帧。有效数据字节之间的间隙会自动填充闲置,以保持锁定并防止过多的电磁干扰。流控制在Aurora 64B/66B中是可选的,可用于限制linkpartner的传输数据速率,或通过通道发送简短的高优先级消息。流在Aurora 64B/66B中实现为单个无休止的帧。每当数据未被发送时,发送闲置以保持链路存活。过多的位错误、断开连接或设备故障会导致内核重置并尝试初始化新通道。Aurora 64B/66B核心可以支持多通道信道的接收中的最多两个符号偏斜。Aurora 64B/66B协议使用64B/66B编码。与8B的25% 开销相比,64B/66bencoding具有非常低 (3%) 的传输开销,因此理论上可以提高性能。

Aurora 64B/66B核心框图

通道逻辑: 通道逻辑模块的实例驱动每个GT收发器。该通道逻辑初始化每个单独的收发器,处理控制字符的编码和解码,并执行错误检测

通道逻辑: 通道逻辑模块的实例驱动每个GT收发器。该通道逻辑初始化每个单独的收发器,处理控制字符的编码和解码,并执行错误检测。

全局逻辑: 内核中的全局逻辑模块执行用于通道初始化的通道绑定。在操作期间,通道跟踪由Aurora 64B/66B协议定义的未就绪空闲特性,并监视所有通道逻辑模块的错误。

RX用户界面: AXI4-Stream接收 (RX) 用户界面将数据从通道移动到应用程序,并执行流量控制功能。

TX用户界面: AXI4-Stream传输 (TX) 用户界面将数据从应用程序移动到信道,并执行流量控制TX功能。标准时钟补偿模块嵌入在核心内部。该模块控制时钟补偿 (CC) 的周期性传输。

核操作的最大频率取决于支持的线路速率和设备的速度等级。

吞吐量:Aurora 64B/66B核心吞吐量取决于收发器的数量、收发器类型和所选收发器的目标线路速率。对于GTH收发器,吞吐量分别从单通道设计到16通道设计的0.48 Gbps到254.06 Gbps不等。note:为了在使用VIVADO的默认合成策略时获得更好的定时性能,请将线路速率从IP/收发器支持的最大线路速率降低约30%。当启用CRC_MODE时,将线路速率降低50%。使用另一种合适的合成策略,用户可以实现IP中支持的最大线路速率。 

端口说明:

顶层文件实例化Aurora 64B/66B lanemodule、TX和RX AXI4-Stream模块、全局逻辑模块以及GTX、GTH、orGTY收发器包装器。此顶级包装文件在示例设计文件中与时钟、复位电路、帧生成器和检查器模块一起实例化。

下图显示了Aurora 64B/66B AXI4-Stream数据接口位排序的n字节示例。

成帧用户界面 (如下图所示) 符合AMBA AXI4-StreamProtocol规范 (ARM IHI 0051A),并包含发送和接收成帧用户数据所需的信号。成帧接口的详细描述如下。

仅当s_axi_tx_tready和s_axi_tx_tvalid均被断言时,Aurora 64B/66B核心才对数据进行采样。用户应用程序可以在任何时钟周期 (带暂停的数据传输) 取消断言s_axi_tx_tvalid,以忽略该周期的AXI4-Stream输入。如果这发生在帧的中间,则通过Aurora 64B/66B信道发送空闲符号。AXI4-Stream数据仅在成帧时有效。忽略帧外的数据。要结束aframe,当数据的最后一个字 (或部分字) 在thes_axi_tx_tdata端口上时,断言s_axi_tx_tlast,并使用s_axi_tx_tkeep指定最后数据节拍中的有效字节数。(就是AXI-S的传输模式)

在framing中,每个帧以数据块开始,并以包含帧的最后字节的分隔符块结束。每当数据不可用时,就插入空闲块。块是8个字节的加扰数据或具有2位控制报头 (总共66位) 的控制信息。

(帧传输过程为AXI传输模式大致一致,具体内容在file:///D:/NKUiversity/相关论文/xilinx资料/pg074-aurora-64b66b-en-us-12.0.pdf。16-20页,之后有成帧效率)

流接口:

流接口 (如下图所示) 允许在没有帧分隔符的情况下进行数据传输,因此操作简单,同时使用的资源比framing interface少。

在数据流中,Aurora 64B/66B通道用作管道。流式Aurora 64B/66Binterface期望填充整个s_axi_tx_tdata端口宽度 (八个字节的整数倍) 的数据。当s_axi_tx_tvalid被取消断言时,除传输时钟补偿序列外,在保留的字之间会产生间隙。

当数据到达Aurora 64B/66B通道的RX端时,如果不立即读取,则会丢失。如果这是不可接受的,则必须将缓冲器连接到RX接口以保存数据,直到可以使用。

下图显示了一个典型的流数据传输,开始时没有断言两个就绪信号,以表明用户逻辑和核心都没有准备好传输数据。

在下一个时钟周期中,内核通过断言s_axi_tx_tready表示它已准备好传输数据。一个周期后,用户逻辑断言s_axi_tx_tvalid信号,并将数据放在s_axi_tx_tdata总线上,表明它已准备好传输数据。因为现在两个信号都被断言了,所以如下图所示的数据0从用户逻辑传输到核心。数据1按以下时钟周期传输。在本例中,内核释放它的就绪信号s_axi_tx_treready,并且直到下一个时钟周期才传输数据。当再次断言s_axi_tx_tready信号时,用户应用程序在下一个时钟周期取消断言s_axi_tx_tvalid,并且在断言两个信号之前不传输数据。

下图显示了一个典型的流数据接收示例,可以看到,在rx_valid有效的时候才会接收数据

时钟接口:

参考gtx收发器

流量控制接口:

状态、控制和收发器接口:

Aurora 64B/66B核心的状态和控制端口允许用户应用程序监控通道并使用GTX、GTH和GTY收发器的内置功能。介绍状态接口、控制接口、收发模块串口的示意图和端口说明。DRP接口允许通过符合AXI4-Lite协议或本机动态重新配置端口(DRP)接口读取和更新串行收发器参数和设置

   (接口说明在page 38-41)主要是动态重新配置高速收发器

reset_pb: 按钮重置。在example design 中作为的top层重置输入。驱动内核内部的支持重置逻辑所需。

pma_init:收发器PMA_INIT复位信号通过一个无抖动器连接到顶层。系统地重置收发器的所有物理编码子层(PCS)和物理介质附件(PMA)子组件。信号使用init_clk_in去抖动至少6个init_clk周期。有关详细信息,请参阅相关收发器用户指南中的重置部分。

可以理解为这两个信号都是复位信号。

drp_clk_in:用户可配置的参数仅适用到 7 系列 FPGA 设计。默认值为100兆赫。drp_clk频率可以从50 MHz 至 x MHz,其中 x 是设备和速度取决于等级。

init_clk_in:信号用于注册和去抖动pma_init信号。首选的init_clk范围是50 ~ 200mhz。核心设置的默认init_clk频率为50mhz,用于7系列设计,

note:收发器控制和状态接口中的端口必须按照相应的GT用户指南进行驱动。使用表12所示的输入信号:收发器控制和状态接口端口使用不当可能会导致IP核的不可预知行为

auror64B/66B内核中的错误信号:

设备问题和通道噪声可能导致极光64B/66B通道运行错误。64B/66B编码方法允许Aurora 64B/66B核心检测信道中发生的位错误。内核通过在检测到这些错误的每个周期中断言soft_err信号来报告这些错误。

该核心还监视每个高速串行GTX和GTH收发器的硬件错误,如缓冲区溢出和锁丢失。通过断言hard_err信号来报告硬件错误。灾难性的硬件错误也可以表现为软错误的爆发。Aurora 64B/66B协议规范(SP011)中描述的块同步算法决定是否将软错误突发视为硬错误。

无论何时检测到硬错误,内核都会自动重置自身并尝试重新初始化。在大多数情况下,当导致硬错误的硬件问题得到解决时,这允许重新建立Aurora 64B/66B通道。软错误不会导致重置,除非在短时间内出现某些触发块同步状态机的错误。

硬错误:1.TX溢出/下流:TX数据弹性缓冲区存在溢出或下流情况。当用户时钟和参考时钟源不在同一频率上工作时,就会出现这种情况。2.RX溢出/下流:RX数据时钟校正和通道绑定FIFO存在溢出或下流情况。当两个通道伙伴的时钟源频率不在±100ppm范围内时,就会出现这种情况

软错误:短时间内发生的软错误太多。1.如果检测到太多无效同步标头,对齐块同步状态机将自动尝试重新对齐。软错误不会转化为硬错误。2.无效的同步头:64位块上的2位头不是有效的控制头或数据头。3.无效的同步头:64位块上的2位头不是有效的控制头或数据头。

初始化:

上电、复位、硬错误后,内核自动初始化(下图)。通道两侧的核心模块执行Aurora 64B/66B初始化过程,直到通道准备好使用。lane_up总线指示通道中的哪些通道已经完成了过程的通道初始化部分。lane_up信号可以用来帮助调试多通道信道中的设备问题。Channel_up只有在核心完成整个初始化过程之后才会断言。

Aurora 64B/66B内核可以在断言channel_up之前接收数据。应该只使用用户界面m_axi_rx_tvalid信号来限定传入的数据。因为在断言channel_up之后才会发生传输,所以channel_up可以反转并用于重置驱动全双工信道的TX端的模块。如果用户应用模块需要在接收数据之前复位,则可以使用反向lane_up信号来实现此目的。在所有的lane_up信号被断言之前,数据不能被接收。

时钟:

良好的时钟对64B/66B核心的正确运行至关重要。核心需要一个低抖动参考时钟来驱动GTX、GTH或GTY收发器中的高速TX时钟和时钟恢复电路。核心还需要至少一个锁定频率的并行时钟,以便与用户应用程序进行同步操作。时钟架构图:

gt_refclk (clkp/clkn)是一个专用的外部时钟,由振荡器生成,并通过专用的IBUFDS提供。

时钟接口具体与开发板的连接还需要熟悉。明天再看看GTX收发器

(本文仅对用赛灵思手册的前半部分,后部分有IP核GUI页面的说明解释,调试以及迁移应用等,较为全面,暂时用不到,仅做学习之用)

加:

    正/负差分串行数据输出引脚。

Q AND A:

1.drp_clk是用来设置参数进行调试用,和gt_ref_clk无关(大概是这个意思)

2.采用init_clk 与开发板上的时钟没有关系,50mhz是允许最低的时钟频率,有最低的功耗,开发板上的时钟是提供给fpga一个时钟源。fpga内部自己可以规定时钟。

<think> 首先,用户的问题是:“我想查找使用GT IP实现aurora 64b/66b的方法 请问如何使用GT IP实现aurora 64b/66b”。 系统指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识。 - 回答结构清晰,帮助用户逐步解决问题,尽量保证回答真实可靠。 所以,我需要用中文回答,结构清晰,逐步解释如何使用GT IP实现Aurora 64B/66B。 引用信息: - 引用[1]:提到使用GT 64B66B设计自定义PHY层,并参考了AURORA8B18B IP核的使用,说AURORA64B66B IP核的使用与AURORA8B18B相似。 - 引用[2]:提到Aurora 64B/66B学习记录,配置指南等。 - 引用[3]:详细描述了IP配置和协议理解,包括Gearbox的工作方式。 用户可见层指令强调回答要真实可靠,所以我应该基于提供的引用信息构建回答。 关键点: - 使用GT IP实现Aurora 64B/66B涉及配置IP核和理解协议。 - 引用[1]说AURORA64B66B的使用与AURORA8B18B类似,可以参考前文。 - 引用[3]解释了IP配置和Gearbox的工作方式。 步骤: 1. **介绍Aurora 64B/66B协议**:简要说明协议是什么。 2. **IP核配置**:基于引用[1]和[3],解释如何配置GT IP核。 3. **用户逻辑实现**:讨论如何实现用户逻辑,包括Gearbox的处理(引用[3])。 4. **协议理解**:解释64B66B编码和Gearbox机制。 5. **参考资源**:提供参考链接或指南。 结构回答: - 开头介绍。 - 逐步说明实现方法。 - 在适当的地方添加引用标识。 - 结尾生成相关问题。 行内数学表达式:例如,如果有变量或方程,用$...$,比如数据宽度$64$位等。 独立公式:如果有,用$$...$$,但在这个上下文中,可能不需要复杂的数学公式。 生成相关问题:在最后添加“相关问题”部分。 最终输出: - 用户可见层:回答用户的问题。 - 结束时添加“相关问题”。 </think>### 使用GT IP实现Aurora 64B/66B协议的方法 Aurora 64B/66B是一种高速串行通信协议,常用于FPGA设计中,用于实现高带宽数据传输(例如在10Gbps以上场景)。它基于64位数据编码为66位(即$64B/66B$),具有低开销和低延迟特性。使用Xilinx/AMD的GT(Gigabit Transceiver)IP核实现该协议,需要以下步骤:配置GT IP核、实现用户逻辑(包括Gearbox处理),并理解协议机制。以下是详细步骤,基于公开资源(如AMD IP核文档)和社区经验[^1][^2][^3]。 #### 1. **GT IP核配置** - **核心选项设置**:在Vivado IP Integrator中,选择GT IP核(如GTH或GTY),并配置为Aurora 64B/66B模式。关键参数包括: - **数据宽度**:设置为$64$位(输入)和$66$位(输出)。 - **传输速率**:根据硬件平台选择,例如10.3125 Gbps或更高。 - **参考时钟**:选择合适的参考时钟源,确保与系统时钟同步。 - 其他选项如通道数、Lane宽度等,根据设计需求调整。配置细节可参考AMD官方文档[^2]。 - **Gearbox选择**:GT IP核内部可能不包含完整的Gearbox计数器,因此在配置时需要选择“外部计数器”模式(External Gearbox Counter)。这是因为64B66B编码存在$2$位带宽差(输入$64$位 vs 输出$66$位),Gearbox负责缓冲数据以消除差异[^3]。 - **示例配置流程**: 1. 在Vivado中打开IP Catalog,搜索“GT”。 2. 选择“Aurora 64B66B”协议类型。 3. 在“Core Options”中启用“External Gearbox”。 4. 生成IP核后,集成到设计中。 #### 2. **用户逻辑实现** 用户逻辑是核心部分,需处理数据转换和流控制: - **Gearbox实现**:由于GT IP核可能不包含内部计数器,需在用户逻辑中实现外部计数器。方法如下: - 输入数据:接收$64$位用户数据。 - 输出数据:每$32$个时钟周期,输出$66$位数据(其中$2$位来自Gearbox缓冲)。 - 计数器逻辑:使用一个计数器(例如$5$位计数器,范围$0$到$31$)跟踪数据发送次数。计数器公式为: $$ \text{counter} = (\text{counter} + 1) \mod 32 $$ 当计数器达到$31$时,暂停一帧发送,将Gearbox中缓冲的$64$位数据输出,以消除带宽差异[^3]。 - **数据流控制**:实现简单的FIFO或AXI-Stream接口,确保数据稳定传输。注意: - 在计数器溢出时(即$32$次发送后),需插入空闲帧(Idle Frame)来触发Gearbox数据输出。 - 错误处理:添加CRC校验或重传机制,以处理传输错误(参考Aurora协议标准)。 - 代码示例(伪代码): ```verilog module gearbox_counter ( input clk, reset, input [63:0] data_in, output reg [65:0] data_out ); reg [4:0] count = 0; // 5-bit counter for 32 cycles reg [63:0] buffer; // Gearbox buffer always @(posedge clk or posedge reset) begin if (reset) begin count <= 0; data_out <= 0; end else begin if (count < 31) begin data_out <= {2'b00, data_in}; // Output 66b data buffer <= buffer; // Hold buffer count <= count + 1; end else begin data_out <= {2'b01, buffer}; // Output buffered data count <= 0; end end end endmodule ``` #### 3. **协议机制理解** - **64B66B编码原理**:每个$64$位数据包添加$2$位同步头(Sync Header),形成$66$位帧。同步头用于时钟恢复,值通常为$01$或$10$(二进制)。 - **带宽差异处理**:Gearbox通过外部计数器实现数据平衡。发送$32$个$64$位帧后,暂停一帧以发送缓冲数据,确保输入/输出速率一致(平均带宽公式:$ \frac{64}{66} \times \text{速率} $)[^3]。 - **调试建议**:使用Vivado的ILA(Integrated Logic Analyzer)监控数据流。常见问题包括计数器失步或时钟抖动;参考AMD的调试指南优化时序。 #### 4. **资源参考与工具** - **官方文档**:AMD的《Aurora 64B/66B IP Product Guide (PG074)》是权威参考,涵盖配置细节和实例[^2]。 - **社区示例**:参考开源项目或教程(如优快云博客),其中详细步骤与AURORA8B18B类似[^1]。链接:[AURORA8B18B参考文章](https://blog.csdn.net/m0_56222647/article/details/137261729)。 - **仿真与测试**:使用Vivado Simulator或第三方工具(如ModelSim)验证设计。确保覆盖率包括计数器边界情况(例如$ \text{counter} = 31 $)。 实现Aurora 64B/66B的核心是正确配置GT IP核并稳健实现用户逻辑。如果遇到问题,查阅PG074文档或社区资源能提供更多帮助[^1][^2][^3]。 ### 相关问题 1. Aurora 64B/66B协议中的Gearbox计数器如何优化以减少资源占用? 2. 在FPGA设计中,如何调试Aurora 64B/66B的时钟恢复问题? 3. GT IP核支持哪些其他高速协议,与Aurora 64B/66B有何区别?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值