目录

  • 1 概览
    • 1.1 应用
    • 1.2 不支持的功能
  • 2 产品规格
    • 2.1 性能
      • 2.1.1 最大频率
      • 2.1.2 延时
      • 2.1.3 吞吐量
    • 2.3 端口描述
      • 2.3.1 用户接口
        • 1. **顶层接口**
        • 2. **帧接口**
        • 3. **发送数据**
        • 4. **接收数据**
        • 5. 帧效率
      • 2.3.3 **Streaming接口**
        • 1. **发送与接收数据**
      • 2.3.2 时钟接口
      • 2.3.4 流控制接口
      • 2.3.5 状态、控制、传输接口
      • 2.3.6 CRC接口

1 概览

Aurora 64B66B是一个轻量化的,多吉比特(multi-gigabit )链路串行通信协议。用于一个或多个GTX,GTH或GTY收发器之间的数据传输。连接可以是全双工(full-duplex)的或单工(simplex)的。

Aurora 64B66B IP核支持高级微控制器总线结构(Advanced Microcontroller Bus Architecture,AMBA)协议的AXI4-Stream用户接口。一个Aurora 64B/66B核实例可以在GTX、GTH或GTY收发器上使用多达16个有效的连续通路(lane),以任何支持的线速率运行,提供低成本、通用的数据通道,吞吐量从500 Mb/s到超过400 Gb/s。

使用一系列自动化仿真测试来验证Aurora 64B/66B核是否符合协议。

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%。

1.1 应用

由于其低资源成本、可扩展的吞吐量和灵活的数据接口,Aurora 64B/66B核可用于各种应用程序。Aurora 64B/66B核心应用的例子包括:

  • 芯片间的连接(Chip-to-chip links):用高速串行连接代替芯片之间的并行连接可以显著减少PCB上所需的线和层数。
  • 电路板间(Board-to-board and backplane)的连接:Aurora 64B/66B使用标准的64B/66B编码,这是10Gb以太网的首选编码方案,使其与许多现有的电缆和背板硬件标准兼容。Aurora 64B/66B可以在线路速率和信道宽度方面进行扩展,以允许廉价的传统硬件用于新的高性能系统。
  • 单工连接:Aurora 64B/66B单工协议提供单向通道初始化,使得当回发通道不可用时可以使用GTX、GTH和GTY收发器,并减少由于未使用全双工资源而导致的成本。

1.2 不支持的功能

  • 在Aurora 64B/66B核不支持AXI4-Stream非严格对齐模式。
  • 在Aurora 64B/66B核不支持7系列设备的GTP和GTZ类型收发器。
  • Aurora 64B/66B仅支持GTYE3/GTYE4 16.375G设备的UFC功能。
  • 在GTHE4/GTYE4和使用DRP的CPLL配置的情况下,动态切换线速率可能不会像预期的那样工作,因为gtwizard_ultrascale IP中的GTHE4/GTYE4 CPLL校准模块进行了更新。

2 产品规格

Aurora 64B/66B IP核结构:

主要功能模块:

  • Lane logic:每个GT收发器由一个lane逻辑模块实例驱动,该实例初始化每个单独的收发器,处理控制字符的编码和解码,并执行错误检测。
  • Global logic: 核心中的全局逻辑模块执行通道绑定以进行通道初始化。在运行过程中,该通道跟踪Aurora 64B/66B协议定义的Not Ready空闲字符,并监控所有通道逻辑模块的错误。
  • RX user interface: AXI4-Stream接收(RX)用户界面将数据从通道移动到应用程序,并执行流控制功能。
  • TX user interface: AXI4-Stream发送(TX)用户界面将数据从应用程序移动到通道,并执行TX的流量控制功能。标准时钟补偿模块嵌入在内核中。这个模块控制时钟补偿(CC)字符的周期性传输。

2.1 性能

2.1.1 最大频率

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

2.1.2 延时

对于默认的单lane配置,通过Aurora 64B/66B核心的延迟是由通过协议引擎(PE)和通过GTX和GTH收发器的流水线延迟( pipeline delay)造成的。PE流水线延迟随着AXI4-Stream接口宽度的增加而增加。收发器延迟是由收发器特性决定的。

数据路径延迟:

7系列GTX, GTH和的默认核心配置的流水线组件的最大延迟和单个延迟值UltraScale, UltraScale+ GTH收发器设备。延迟可能随添加的流控制而变化。

延时组件 user_clk 周期数
Logic 46
Gearbox 1或2
Clock Compensation 7
Maximum(总数) 54或55

流水线延迟是为了保持时钟速度而设计的。

2.1.3 吞吐量

Aurora 64B/66B核心吞吐量取决于收发器数量、收发器类型和所选收发器的目标线速率。对于GTH收发器,单lane设计和16 lane设计的吞吐量分别为0.48 Gb/s到254.06 Gb/s。对于GTY收发器,吞吐量在0.455 Gb/s ~ 400 Gb/s之间
支持的线速率范围为0.5 Gb/s ~ 25.7813 Gb/s。当线路速率大于16.375 Gb/s时,GTY的最大吞吐量可能不准确,考虑到设计中的lane striping差异。

2.3 端口描述

用于生成每个Aurora 64B/66B核心的参数决定了该特定核心可用的接口。USER_DATA_S_AXIS_TX是一个接口,s_axi_tx_*端口分组到该接口中。在符号中,接口以分组的形式显示,点击+可以显示其中的端口。

2.3.1 用户接口

名称 说明
USER_DATA_S_AXIS_TX 发送数据接口
USER_DATA_M_AXIS_RX 接收数据接口

1. 顶层接口

Aurora 64B/66B顶层(块级)文件包含顶层接口定义,是用户设计的起点。顶级文件实例化了Aurora 64B/66B lane模块、TX和RX AXI4-Stream模块、全局逻辑模块和GTX,GTH或GTY收发器封装器。这个顶级封装文件与时钟、复位电路、帧生成器和检查模块一起在示例设计文件中实例化。

Aurora 64B/66B AXI4-Stream数据接口bit顺序的 n字节示例。高位在前。

2. 帧接口

遵循AXI4-Stream Protocol Specification。主演端口:

发送数据:

s_axi_tx_treadys_axi_tx_tvalid都断言(指示有效)时才会对数据进行采集。用户可以在任意时钟周期取消断言s_axi_tx_tvalid,如果在一帧之间取消断言了,channel会发送idle符号。

**AXI4-Stream数据只有在被帧化时才有效。**帧外的数据被忽略。要结束帧,当数据的最后一个字(或部分字)在s_ax_tx_tdata端口上时,断言s_ax_tx_tlast,并使用s_ax_tx_tkeep指定最后一个数据节拍中的有效字节数。

对于任何类型的转移,这些请求都具有高优先级:

  • TXDATAVALID从收发器TX接口取消断言(1周期)。
  • CC传输(8个周期)

Aurora 64B/66B 帧

块Block是8个字节的扰乱的数据或控制信息与一个2位的控制头(共66位)。

所有Aurora 64B/66B数据都作为数据块(data block)或分隔块(separator block)的一部分发送。分隔块(SEP)由一个计数字段组成,该字段指示在该特定块中有多少字节是有效的。在帧形成中,每个帧以数据块开始,以包含帧最后一个字节的分隔块结束。当数据不可用时插入空闲块(Idle block)。

一个典型的具有偶数数据字节的Aurora 64B/66B帧。

Data Byte0 Data Byte1 Data Byte2 Data Byte3 Data Byte n-2 Data Byte n-1 Data Byte0 n
SEP (1E) Count (4) Data Byte0 Data Byte1 Data Byte2 Data Byte3 x x

为了发送数据,用户应用程序配置控制信号,使核心执行以下步骤:

  • s_axi_tx_tdata总线上接受来自用户应用程序的数据。
  • s_ax_tx_tlasts_ax_tx_tkeep 一起断言,指示帧结束。
  • 当用户应用程序取消断言s_axi_tx_tvalid时,在串行数据上插入空闲或暂停周期。

当接收数据时,执行以下步骤:

  • 检测和丢弃控制字节(idle,时钟补偿)。
  • 恢复来自lane的数据。
  • m_axi_rx_tdata总线上组装数据给用户应用程序,包括在m_axi_rx_tkeep上提供有效字节数,并在m_axi_rx_tlast周期中断言m_axi_rx_tvalid

当线速率高于16.375Gb/s,数据处理方式不同。

3. 发送数据

示例A:简单的数据发送
一个简单的n字节宽的数据传输的例子。发送3n字节的数据需要3个数据拍。断言s_axi_tx_tready表示AXI4-Stream接口已准备好传输数据。

为了开始数据传输,用户应用程序断言s_axi_tx_tvalid并提供用户帧的前n个字节。因为已经断言了s_axi_tx_tready,数据传输从下一个时钟边缘开始。数据字节被放置在数据块中,并通过Aurora 64B/66B通道传输。

为了结束数据传输,用户应用程序 最后的数据字节 和 s_ax_tx_tkeep总线上适当的TKEEP值(0xFF) 到来时,断言s_ax_tx_tlasts_ax_tx_tvalid。核心以块的形式发送最后的数据字,并且必须在下一个循环中发送一个空的分隔块来表示帧的结束。
在下一个循环中重新声明S_axi_tx_tready,以便继续更多的数据传输。如果没有新的数据,Aurora 64B/66B核心发送空闲数据。

示例B:带暂停的数据发送

在帧传输期间,用户应用程序暂停数据传输。应用程序发送3n字节的数据,并在前n字节后暂停数据流。在第一个数据字之后,应用程序取消对s_axi_tx_tvalid的断言,导致TX忽略总线上的所有数据并传输空闲块。暂停一直持续直到断言s_axi_tx_tvalid

示例C:带暂停的数据发送

当发送时钟补偿序列时,核心自动中断数据传输。

4. 接收数据

因为IP核没有用于用户数据的内置缓冲区,所以在RX AXI4-Stream接口上没有m_axi_rx_tready信号。用户应用程序控制从一个Aurora 64B/66B通道来的数据流,是IP核可选的流控制功能之一。

m_axi_rx_tvalid信号与IP核中每一帧的第一个word同时断言。m_axi_rx_tlast信号与每一帧的最后一个word或部分word同时断言。m_axi_rx_tkeep端口使用与s_axi_tx_tkeep相同的字节指示过程表示每个帧的最后一个字中的有效字节数。当m_axi_rx_tlast未断言时,指定所有有效字节数(所有1),当m_axi_rx_tlast断言时指定准确的有效字节数。

如果选择CRC选项,接收的数据流将计算期望的CRC值。CRC块重新计算m_axi_rx_tkeep值,并相应地断言m_axi_rx_tlast

IP核可以在任何时候取消断言m_axi_rx_tvalid,甚至在帧期间。

示例A:带暂停的数据接收

数据在m_axi_rx_tdata总线上。当前n个字节放在总线上时,断言m_axi_rx_tvalid输出,以表明数据已经为用户应用程序准备好了。

暂停结束之后,IP核断言m_axi_rx_tvalid并继续在m_axi_rx_tdata总线上组装剩余的数据。在帧的末尾,IP核断言m_axi_rx_tlast。IP核还会计算m_axi_rx_tkeep总线的值,并根据帧的最后一个字中的有效字节总数将其呈现给用户应用程序。

5. 帧效率

有两个因素会影响Aurora 64B/66B核心的帧效率:

  • 帧的大小
  • 每32个user_clk周期后,从gearbox发出的数据无效请求。

GTX和GTH收发器中的gearbox需要一个周期性的暂停来满足时钟分频比和64B/66B编码。在AXI4-Stream接口中,用户数据需要在每32个循环之后停止一个循环。用户接口中来自Aurora 64B/66B核心的s_ax_tx_tready信号被取消一个周期,每32个周期后取消一次。暂停周期用于补偿变速箱的64B/66B编码。

关于这一部分,可以看看另一篇关于GTX收发器的知识10G光通信 64B66B编解码 配置方法及其工作原理-两种序列计数器工作原理章节,Aurora 64B/66B就是在简单的64B/66B编码收发器的基础上增加了帧结构,简化了用户的使用和控制。

Aurora 64B/66B核心实现了Aurora 64B/66B协议的严格对齐选项。在给定的周期内,没有数据块被放置在空闲块或SEP块之后。下表是一个包含时钟补偿开销(每4992 user_clk周期发送一次最多8个CC字符的CC序列)后计算的示例,显示了单lane的效率,同时说明了效率随帧长增加而增加。

用户数据字节数 帧效率百分比
100 96.12
1000 99.18
10000 99.89

当传输256字节的帧数据时,单lane通道中的开销如下表。由于帧尾SEP块使得数据单元长度为264字节。这将导致3.03%的发送器开销。此外,时钟补偿块必须每10,000个周期至少传输3个周期,从而在发送器中增加0.03%的额外开销。

lane 时钟周期数 功能
[D0:D7] 1 通道帧数据
[D8:D15] 2 通道帧数据
...
[D248:D255] 32 通道帧数据
控制块 33 SEP0块

2.3.3 Streaming接口

流接口允许在没有帧分隔符的情况下进行数据传输,从而使其操作简单,同时使用的资源比帧接口少。

1. 发送与接收数据

在Streaming中,Aurora 64B/66B通道以流水线处理。streaming Aurora 64B/66B接口需要数据被填充到整个s_ax_tx_tdata端口宽度(8字节的整数倍)。当s_ax_tx_tvalid被取消断言时,除了传输时钟补偿序列外,保留的word之间会产生间隙。

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

示例A:TX Streaming 数据传输

下图显示了一个典型的流数据传输。第一个时钟周期,两个ready信号都没有断言,表明用户逻辑和IP核都没有准备好传输数据。
下一个时钟周期,IP核通过断言s_axi_tx_tready表示它已准备好传输数据。
下一个时钟周期,用户逻辑断言s_ax_tx_tvalid信号,并将数据放在s_ax_tx_tdata总线上,表明它已经准备好传输数据了。因为两个信号现在都断言,数据拍0 从用户逻辑转移到IP核。
下一个时钟周期,数据拍1 传输。
下一个时钟周期,IP核取消它的就绪信号s_axi_tx_tready,数据无效。
下一个时钟周期,s_axi_tx_tready信号被断言时,传输数据。
下一个时钟周期,用户应用程序取消断言s_axi_tx_tvalid,数据无效,在断言两个ready信号之前不传输任何数据。

这里值得注意的是,实际应用中我们用户的ready是可控的,所以根据IP核的readys_axi_tx_tready给数据。收发器IP核是在ready有效信号的后一周期对应数据有效,而Aurora 64B/66B IP核ready信号s_axi_tx_tready与当前周期的数据对应。也就是说,当s_axi_tx_tready取消断言时,当前数据需要保持到下一个断言的周期才能保证当前数据被发送出去了。这个区别导致我在实际工程中测试了很久才发现:)。

示例A:RX Streaming 数据传输

流模式的接收非常简单,根据有效位接收数据就行。

2.3.2 时钟接口

Aurora 64B/66B IP核时钟端口:

名称 方向 时钟域 描述
init_clk/init_clk_p/init_clk_n Input - init_clk信号用于register和debouncepma_init信号。首选的init_clk范围是50到200MHz。对于7系列设计,内核设置的默认init_clk频率为50MHz,而对于UltraScale设备设计,内核设置的默认频率为line_rate/64。Init_clk频率是一个用户可配置的参数。与在核心选项中包含Shared Logic时,init_clk信号是有差异的。我们默认给一个50MHz时钟就行
init_clk_out Output init_clk init时钟输出。这个端口对Single Ended INIT CLK选项不可用,因为UltraScale和UltraScale+设备没有差分init_clk输入。
user_clk/user_clk_out - - 我们给数据流的时钟,比如我设置线速率10GHz,Aurora 64B/66B规定数据位宽位64b,则我的user_clk为156.25MHz
sync_clk/sync_clk_out - - 给收发器的时钟,sync_clk的速率是user_clk的两倍。比如我设置线速率10GHz,则我的sync_clk为312.5MHz
refclk*_in input - 收发器Quad的参考时钟,可以参考10G光通信 64B66B编解码 配置方法及其工作原理-1.2 Page2:Line Rate,RefClk Selections:
drp_clk_in input - 动态重配置端口(Dynamic Reconfiguration Port DRP)的时钟,根据我们设置的参数给就行

2.3.4 流控制接口

2.3.5 状态、控制、传输接口

2.3.6 CRC接口

【PG074】1 简略学习Aurora 64B/66B IP核相关推荐

  1. 一天上手Aurora 8B/10B IP核(2)----Aurora概述及数据接口(Framing接口、Streaming接口)

    写在前面 系列汇总:一天上手Aurora 8B/10B IP核----汇总篇(直达链接) 1.Aurora 8B/10B 协议 Aurora 协议是一个用于在点对点串行链路间移动数据的可扩展轻量级链路 ...

  2. 一天上手Aurora 8B/10B IP核(4)----从Streaming接口的官方例程学起

    Xilinx的技术生态做的非常好,基本上所有常用的IP核都有官方例程(example design)供开发者学习,咱不用白不用,今儿咱就一起白嫖他一手----从官方例程开始学习如何具体使用这个IP核. ...

  3. 一天上手Aurora 8B/10B IP核(5)----从Framing接口的官方例程学起

    文章目录 写在前面 1.IP核定制与官方例程的生成 1.1.第一页配置:物理层以及链路层信息选择 1.2.第二页配置:对应GT收发器的物理位置选择 1.3.第三页配置:共享逻辑的位置 1.4.官方例程 ...

  4. Xilinx Aurora 8B/10B IP核详解和仿真

    Xilinx Aurora 8B/10B IP核详解和仿真 参考文献 XilinX PG046 Xilinx® LogiCORE™ IP Aurora 8B/10B 支持 AXI4-Stream用户接 ...

  5. Aurora ip核的使用详解

    Aurora ip核的使用详解 前言 近期完成了Aurora的光纤传输的单板验证,以及在集成其他模块完成数据从FPGA上通过PCIE传到上位机,对该IP核的使用有一定的了解,在此用自己的经验以简洁的语 ...

  6. 【PG054】7 Series Integrated Block for PCI Express IP核的学习

    PCIe学习笔记系列: PCIe基础知识及Xilinx相关IP核介绍 概念了解:简单学习PCIe的数据链路与拓扑结构,另外看看有什么相关的IP核. [PG054]7 Series Integrated ...

  7. FFT IP核调用与仿真之FFT数学分析

    对于FFT这个IP核,我其实对它真的是又爱又恨,因为它真的耗费了我太多时间,但是随着研究的深入,遇到的问题一点点给消化解决,终于不用带着问题睡觉了,哈哈,有时候真的挺佩服自己的,遇到不懂的,不了解的, ...

  8. FPGA数字信号处理(八)Quartus FFT IP核实现

    本系列的2-7篇分别介绍了FIR和IIR滤波器的FPGA实现.除了数字滤波器外,快速傅里叶变换(FFT)也是DSP系统常用的运算单元,用于对信号进行频域分析.FFT算法的实现很复杂,但Altera和X ...

  9. FPGA数字信号处理(十八)Quartus CIC IP核实现

    该篇是FPGA数字信号处理的第18篇,题接上篇,本文详细介绍使用Quartus自带的CIC IP核进行设计的方法.下一篇会介绍使用Vivado的IP核设计CIC的方法. IP核概述 由于版本的关系,Q ...

最新文章

  1. Dz0724补丁补掉的一个xss+补掉的另外一个xss
  2. ASP.NET MVC WebAPI实现文件批量上传
  3. android device monitor命令行窗口在哪里_Vulkan在Android使用Compute shader
  4. boost::hana::remove用法的测试程序
  5. Angular2组件与指令的小实践——实现一个图片轮播组件
  6. linux下使用python操作mysql
  7. Python逐行读取文件内容
  8. Pytorch:神经网络工具箱nn
  9. 模拟鱼群的matlab算法,IFSA人工鱼群算法
  10. Atitit 图像处理 调用opencv 通过java  api   attilax总结
  11. 今日download工程的奇怪问题error C2039: 'readStdErr' : is not a member of 'Programer',
  12. 组态王、力控、MCGS、瑞尔、杰控等国内组态软件一点看法 1
  13. nodejs设置镜像源
  14. word里表格斜线怎么弄
  15. 罗马数字序号与word2013中如何插入
  16. 黑客语言——Ruby
  17. mac os重置服务权限
  18. ftime()函数的用法!
  19. ASP.NET设置404错误页面
  20. MySQL 删除数据库

热门文章

  1. 一个仿知乎的问答论坛
  2. Ray在蚂蚁大规模生成落地中的优化与实践
  3. 木马伪装“刷单任务” 劫持QQ语音暗中盗号
  4. 5码默认版块_速看!在阜阳,“5折乘公交”优惠来了
  5. java中的静态是什么?怎么用?
  6. 公众号图文消息加html,微信公众号图文排版,如何给文章或者段落添加背景图?...
  7. 什么是时间序列数据?
  8. 苹果重新设计开源官网;阿里云开放 YoC 源代码;GitHub 开发 Code Search 功能 | 开源日报
  9. 利用高德地图实现定位功能
  10. Excel导入导出详细教程------EasyExcel功能整合