版权声明:本文为CSDN博主「FPGA大叔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_52840978/article/details/121846820
一、Aurora协议
Aurora 是一个用于在点对点串行链路间移动数据的可扩展轻量级链路层协议。这为物理层提供透明接口,让专有协议或业界标准协议上层能方便地使用高速收发器。虽然使用的逻辑资源非常少,但 Aurora 能提供低延迟高带宽和高度可配置的特性集。在 Xilinx FPGA 上使用是免费的,而且在 ASIC 上能以名义成本通过单独的许可证协议得到支持。
主要特性:
1. 高带宽,仅受限于收发器的数据速率
2. 支持大量键合线路,实现较高的总带宽
3. 支持全双工和单工通道
4. 无限帧尺寸/灵活组帧
5. 小型逻辑封装,采用标准的 AXI-ST 接口。
6. 内置流程控制和热插拔支持
Aurora 广泛用于需要背板、电路板间和芯片间连接的应用。细分市场包括有线通信、存储、服务器、测试测量、工业、消费和医疗等。此外,Aurora 也可用作嵌入式处理器应用中的调试端口。
二、Xilinx平台Aurora IP介绍
Xilinx提供了两个Aurora核,分别是:Aurora 8B/10B 以及Aurora 64B/66B。
顾名思义,主要是8B/10B ,64B/66B的区别;8B/10B编码可以平衡DC,有足够的跳变来恢复时钟,但是有20%的带宽开销。64B/66B编码的前两位表示同步头,减小的开销,但是却不能保证0/1数量的平衡,因此需要进行加绕。
上面简单介绍了8B/10B, 64B/66B;但是对于我们使用IP核来说,步骤其实是一样的。这里以Aurora 8B/10B进行介绍。
三、Aurora IP组成结构
3.1总览
看图说话,我们简单分析一下:
两个Aurora核,建立一个Channel,这两个核就称为Aurora Channel Partners。但是,这个Channel又可以是多条lane,每条lane对应一个高速收发器GT。8B/10B编码后的数据就是通过GT传输。所以,我们可以认识到,高速接口物理层都是基于GT。关于GT,可以参考:https://blog.csdn.net/m0_52840978/article/details/121455025?spm=1001.201... FPGA平台GTX简易使用教程(汇总篇)
那么,数据发送的过程呢?首先,用户数据经过用户接口传给Aurora核,Aurora核通过Aurora Channel(可能多条lane)将编码后的串行数据发送到另一端的Aurora核进行接收,解码,串并转换,最后将用户数据给到用户应用。
3.2框图
我们继续来看Aurora 8B/10B的框图:
Aurora 8B/10B核的主要功能模块包括:
1. Lane Logic: 每条lane都包含一个GT,Lane逻辑模块实体驱动每个GT,并初始化每个GT收发器,处理编解码及错误检测等。
2. Global Logic: 全局逻辑模块执行通道初始化的绑定和验证阶段。 在运行过程中,模块生成Aurora协议所需的随机空闲字符,并监控所有lane逻辑模块的错误。
3. RX User Interface: 接收端用户接口使用AXI4-S接口将数据从channel传到用户应用并可进行接收流控功能。
4. TX User Interface: 发送端用户接口使用AXI4-S接口将数据从用户应用传到channel并进行发送流控功能。标准时钟补偿模块嵌入在核中。这个模块控制时钟补偿(CC)字符的周期性传输。
3.3顶层结构
Aurora 8B/10B核的顶层文件实例化了lane logic模块TX和RX 的AXI4-Stream模块、全局逻辑模块和收发器的封装模块在Example Design中也实例化了时钟和复位电路、帧生成模块和检查模块。
下图是一个全双工配置的Aurora 8B/10B: