赞
踩
Aurora 协议是一个用于在点对点串行链路间移动数据的可扩展轻量级链路层协议(由Xilinx开发提供)。这为物理层提供透明接口,让专有协议或业界标准协议上层能方便地使用高速收发器。Aurora协议在Xilinx的FPGA上有两种实现方式:8B/10B 与 64B/10B。两个协议大部分相同,主要区别在编码方式上:
高速接口的IO都在MGT bank上面
1个bank有4对Lane,2对差分时钟。
总结:1、ref_clk 的值根据对应硬件设计的来;
2、INIT CLK 和DRP CLK可以用PLL或者MMCM生成;
3、user_clk_out是用户时钟域,数据收发接口应该工作在此时钟域下。
全双工模块下的复位设计:
复位信号有gt_reset和系统复位reset两种,且都是高复位。
gt_reset复位比较底层,可以理解系统复位reset是gt_reset的子集。
reset:用于复位 Aurora 8B/10B IP 核的协议层逻辑(控制逻辑、数据路径等)。它的作用是确保协议层逻辑处于正确的初始状态,不会影响底层的 GT 模块。
gt_reset:用于复位底层的高速收发器(GT),包括 PLL、CDR、SerDes 等。它的作用是确保 GT 模块的正确初始化和数据同步,影响整个链路的物理层操作。
reset:至少保持6个user_clk周期、之后的channel_up保持三个周期后拉低。
get_reset至少保持6个init_clk。
使用a7板子,在实际设计中复位时序如下:
Aurora IP还提供了一系列的指示接口出来,方便进行调试:
Aurora 8B/10B IP核支持AXI4-Stream协议,并依据是否对AXI4-Stream协议进行再封装来提供两种数据传输接口:Framing 接口(帧传输接口)和Streaming接口(流传输接口)。
Aurora 8B / 10B IP核采用升序排列。 首先发送和接收最高有效字节的最高有效位。 下图显示了n字节的Aurora 8B / 10B IP核的AXI4-Stream数据接口示例。
Streaming接口示意图如下:
看起来比 Framing接口简化了很多,因为发送端和接收端都少了keep和last这两个信号(共4个)。之前说过,Framing接口的帧框架使得需要使用keep和last这两个信号来控制帧的长度,所以信号较多。而Streaming接口则没有帧框架,相当于一条不停流动的管道,所以不需要使用keep和last这两个信号来控制长度。
用起来也很简单,发送数据只要在tvalid信号和tready信号握手成功时就可以发送;接收数据就更简单了,只要tvalid为高则说明此时接收的数据是有效的。
Example A: TX Streaming Data Transfer(数据发送)
只有当s_axi_tx_tready、s_axi_tx_tvalid均为高(成功握手)时,才可以发送数据。
Example B: RX Streaming Data Transfer(接收数据)
只有当m_axi_rx_tvalid为高时才说明接收到的数据为有效数据。
Streaming接口总结:
Framing接口示意图如下:
Framing接口由于存在frame(帧)的概念,所以接口信号较之Streaming接口要复杂一点,主要接口如下:
1)发送端(相对于用户来说)
名称 | 方向 | 时钟域 | 说明 |
s_axi_tx_tdata[(8n–1):0] | 输入 | user_clk | 用户要发送的数据,位宽由链路位宽和链路数量决定 |
s_axi_tx_tready | 输出 | user_clk | 为高表明当前IP核准备接收数据 |
s_axi_tx_tlast | 输入 | user_clk | 发送的最后一个数据,高电平有效 |
s_axi_tx_tkeep[(n–1):0] | 输入 | user_clk | 用来指示发送的最后一个数据的有效字节 |
s_axi_tx_tvalid | 输入 | user_clk | 为高表明当前用户发送的数据有效 |
名称 | 方向 | 时钟域 | 说明 |
---|---|---|---|
m_axi_rx_tdata[8(n–1):0] | 输出 | user_clk | 接收到的数据,位宽由链路位宽和链路数量决定 |
m_axi_rx_tlast | 输出 | user_clk | 接收的最后一个数据,高电平有效 |
m_axi_rx_tkeep[(n–1):0] | 输出 | user_clk | 用来指示接收的最后一个数据的有效字节 |
m_axi_rx_tvalid | 输出 | user_clk | 为高表明当前接收的数据有效 |
3)Example A: Simple Data Transfer(简单数据传输)
注:其实发送数据方式有很多,这里只给出常用的一种,即:简单数据传输
在valid信号与ready信号握手成功期间传输数据,传输到最后一个数据DATA2时,拉高tlast信号,表明此时传输的是最后一个数据。tkeep信号用来指示数据帧中哪些字节是有效的。
数据接收案例:
接收数据过程简单的很,只需要数据有效信号m_axi_rx_tvalid为高时,则表示此时接收的数据有效。
Framing接口总结:
使用aurora 8b10b 实现数据回环测试(tx和rx短接在一起)。
其中aurora ip设置部分:数据流采用framing接口,练习该接口的使用。(之后的项目中实际使用streaming接口)
aurora_tx_ctrl_inst模块:负责产生tx_tdata 和ufc_tx_tdata。Aurora 8B/10B IP 核对接收到的并行数据进行并转串、8b/10b等操作后,将数据通过 GT 模块输出,而 GT 模块的 TX 串行数据接口(如 gtptxn, gtptxp)需要连接到物理管脚。(数据的回环测试时,不需要绑定管脚,而是通过内部的回环机制在 FPGA 内部实现)
关键时序设计:
aurora_rx_ctrl_inst模块:通过将TX和RX短接,Aurora 8B/10B IP核的RX串行数据接口(gtprxn, gtprxp)
对接收到的串行数据进行解码和处理,包括 8B/10B 解码、串行到并行转换等操作,最后将并行数据输入到aurora_rx_ctrl_inst模块,在该模块中例化ila,验证完整的tx和rx数据通道是否无误。
TXN、TXPX细节
RXN、RXP细节
(1)core options 标签页
(2)GT selections 标签页
(3)shared logic标签页
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。