简介
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内部自己可以规定时钟。