来咯来咯,搬砖全靠它!


汇总篇:

Xilinx平台Aurora IP介绍(汇总篇)


目录

一、Aurora配置

1.1第一页配置

1.2第二页配置

1.3第三页配置

二、Framing接口

2.1 接口信号

2.2理论介绍

2.3 接口时序图

三、Streaming接口

3.1 接口信号

3.3接口时序图


一、Aurora配置

开门见山的说,跟DDR/PCIE/GTX这种复杂的IP相比,Aurora配置那是相当的简单。走着。

1.1第一页配置

 ​​​​​​物理层Physical Layer:

Lane Width : 链路位宽,对应用户数据位宽;实际用户数据位宽= Lane Width*Lane的个数(也就是第二页的Lanes)

Lane Rate  : 链路数据传输速率,Gbps。我们测试默认3.125G就好。

下面三个时钟在上一篇《时钟和复位》说过,就不再啰嗦了。

链路层Link Layer:

dataflow mode: 数据流模式,可选全双工/ 只接收/ 只发送;根据实际情况选择,为了测试,我们这里选择全双工。

interface:Framing/streaming可选。streaming较简单,大家可以自行去验证。一般使用framing接口,可能是axi4-s接口更方便连接吧。后续介绍都基于Framing接口。

flow control:流控,暂时不选择。

back channel:sidebands/timer 可选,(只有在单工模式才能选择);秋大佬告知这个什么意思,我没用过,先略过。

Scrambler/Descrambler :绕码/解绕,这里不选择

little endian support :小端模式,勾选上就对了。小端模式在不同场合一般有两层意思:①[31:0]这种书写习惯,对应的是[0:31];②假设你的数据是64位,链路宽度是32位,那么一次只能传输32bit,先传输高32bit为大端模式,先传输低32bit为小端模式。

1.2第二页配置

第二页配置主要是对GT的选择。

包括:使用几个GTX,GTX的位置等。根据实际选择,这里做测试默认就好。

1.3第三页配置

为了学习以及使用的灵活性,我们一般选择将共享逻辑放在example design而不是放入core。

配置部分就介绍完了,使用还是很简单的。再次感谢xilinx!

前面说过,Aurora core支持两种接口模式:framing 和 streaming。

streaming较简单,framing 较通用。

下面我们一起来看下这两种接口。

二、Framing接口

2.1 接口信号

发送端:

信号名

方向

时钟域

描述

s_axi_tx_tdata

输入

user_clk

需要发送的数据。位宽由链路位宽和链路数量决定。

s_axi_tx_tready

输出

user_clk

核输出的信号,告诉用户core准备好接收数据了。

s_axi_tx_tlast

输入

user_clk

标志发送数据的最后一位数据。

s_axi_tx_tkeep

输入

user_clk

在最后一个数据中,由_tkeep来表示有效的字节。仅当_tlast断言时有效。

s_axi_tx_valid

输入

user_clk

标志_tdata数据有效。

接收端:

信号名

方向

时钟域

描述

m_axi_rx_tdata

输出

user_clk

接收到的数据

m_axi_rx_tlast

输出

user_clk

接收到数据的最后一个数据标志

m_axi_rx_tkeep

输出

user_clk

最后一个数据哪些字节有效

m_axi_rx_tvalid

输出

user_clk

数据有效标志

Tips:  其实,在理解了AXI4总线(AXI4-FULL/LITE/STREAM)后,再来看这些信号名,都不需要看文档你就能知道它的意思了。所以,强烈建议把AXI4总线接口先去熟悉一遍。空了,我也将AXI4总线简单整理一下。

2.2理论介绍

传输数据时,用户逻辑需要操纵控制信号让core做以下操作:

  1. 当s_axi_tx_tvalid和s_axi_tx_tready都断言时,将需要发送的数据放到数据总线s_axi_tx_tdata。简单来说就是_tvalid和_tready每握手一次,完成一个数据传输。
  2. 把数据划分到Aurora 8B/10B channel的各条lane。
  3. 使用 s_axi_tx_tvalid 信号来传输数据,用户应用程序可以将_valid信号置为无效来插入空闲字符idles。(用来暂停或停顿。)
  4. 暂停数据(即插入空闲)(s_axi_tx_tvalid置为无效)

接收数据:

  1. 检测并丢弃控制字节(空闲,时钟补偿,通道PDU(SCP)的开始,通道协议数据单元(ECPDU)的结束和PAD。
  2. 置位成帧信号(m_axi_rx_tlast),并指定最后一个数据(m_axi_rx_tkeep)中的有效字节数。
  3. 从通道中恢复数据。
  4. 通过断言m_axi_rx_tvalid信号来组装数据,以呈现给m_axi_rx_tdata总线上的用户接口。

注意:

仅当同时声明s_axi_tx_tready和s_axi_tx_tvalid(高)时,Aurora 8B / 10B内核才对数据采样。

AXI4-Stream数据仅在帧内时才有效。 帧外的数据将被忽略。 要开始帧,在数据的第一个字位于s_axi_tx_tdata总线上时拉高s_axi_tx_tvalid。 要结束帧,在数据的最后一个字(或部分字)位于s_axi_tx_tdata端口上时拉高s_axi_tx_tlast,并使用s_axi_tx_tkeep指定最后一个数据拍中的有效字节数。

如果帧的长度不超过一个字,则同时使s_axi_tx_tvalid和s_axi_tx_tlast有效。

Aurora 8B/10B Frames 帧结构

TX子模块通过TX接口将每个接收到的用户帧转换为Aurora 8B / 10B帧。 通过在帧的开头添加一个2字节的SCP代码组来指示帧的开始(SOF)。 帧的结尾(EOF)通过在帧的末尾添加2字节的通道结束协议(ECP)代码组来表示。 只要没有数据,就会插入空闲代码组。代码组是8B / 10B编码的字节对,所有数据都作为代码组发送,因此具有奇数字节的用户帧在帧末尾附加了一个称为PAD的控制字符,以填充最终的代码组。

Length

用户应用程序通过操纵s_axi_tx_tvalid和s_axi_tx_tlast信号来控制通道帧长度。 Aurora 8B / 10B核分别响应帧开始和帧结束有序集/ SCP /和/ ECP /。


以上基本是对文档的翻译,结合实际使用来看,帧头帧尾部分由核帮你做了。我们只需要将有效数据负载放在s_axi_tx_tdata总线上,通过s_axi_tx_tvalid和s_axi_tx_tlast握手来进行数据传输就好。接收,根据m_axi_rx_tvalid标志来接收有效数据就好。


2.3 接口时序图

接下来,我们再看3个数据发送的例子:

CASE1 :  简单数据传输

如图所示:在s_axi_tx_tvalid和s_axi_tx_tlast同时有效(握手)时,s_axi_tx_tdata总线上的数据传给了Aurora core,再由core发送出去;s_axi_tx_tlast标志着最后一个数据传输;s_axi_tx_tkeep标志着最后一个数据哪些字节是有效的。

CASE2 :  数据传输with pad(具有奇数字节)

跟case1唯一不同的是,在最后一个数据传输时,由于数据是奇数字节,所以存在无效字节,由tkeep信号来标志有效字节。

CASE3 :  有中断的数据传输

看图就是了,反正记住一点,在ready/valid握手时,才发生有效数据传输。

如果我们想要暂停数据传输,那么只需要将tvalid信号置为无效,就可以插入空闲字符,其实也就达到了流控的效果。

三、Streaming接口

3.1 接口信号

对比framing接口是不是简单很多。

发送:

数据总线s_axi_tx_tdata , 数据有效信号s_axi_tx_tvalid;用户逻辑只需要设计这两个信号就好。同样的,数据传输发生在s_axi_tx_tvalid和s_axi_tx_tready同时有效(握手)时。

接收:

在m_axi_rx_tvalid信号有效时,接收m_axi_rx_tdata数据总线上的数据。

3.3接口时序图

发送:

如下图所示:数据有效传输发生在s_axi_tx_tvalid和s_axi_tx_tready同时有效(握手)时。

接收:

在m_axi_rx_tvalid信号有效时,接收m_axi_rx_tdata数据总线上的数据。如果来不及使用,必须使用buffer先缓存下来,否则数据丢失。

streaming接口较为简单,就不再啰嗦了。后文介绍基于framing接口。




OK,IP配置完了,下一篇我们介绍example design!

Xilinx平台Aurora IP介绍(三)Aurora配置及接口介绍相关推荐

  1. 华三s5000配置镜像接口_H3C S5000系列千兆以太网交换机 用户手册-5W101

    如果命令行所涉及的特性与Web界面相同,则该特性的功能介绍将不再赘述.您可通过本手册中的Web界面设置获取相关的信息. 用户可以通过以下方式登录到设备上,使用命令行对设备进行配置和管理. 登录方式及介 ...

  2. XCP实战系列介绍04-CANape工程配置超详细介绍

    本文框架 1.概述 2.新建CANape工程 3. Device配置 3.1 新建Device 3.2 输入Device名称 3.3 配置Network 3.4 选择A2l文件 3.5 确认报文ID与 ...

  3. 88e1111 phy芯片在arm平台的配置及接口介绍

    88e1111芯片的硬件配置: 引脚到常量的映射: pin bit(2:0) VDDO 111 LED_LINK10 110 LED_LINK100 101 lED_LINK1000 100 LED_ ...

  4. 华三s5000配置镜像接口_H3C S5000交换机简单配置

    H3C S5000 交换机简单配置 常用命令 ------- 此状态下为用户模式, 只能查看交换机的配置, 不能进行具体配置 system view ---------- 由用户模式进入配置模式,可简 ...

  5. Xilinx DDR3 —— MIG IP核的原理(APP接口)

    DDR3 SDRAM(Double-Data-Rate Three Synchronous Dynamic Random Access Memory)是 DDR SDRAM的第三代产品,DDR SDR ...

  6. Xilinx平台Aurora IP介绍(汇总篇)

    Aurora IP核使用超简单的,COME ON! 目录 一.Xilinx平台Aurora IP介绍(一)Aurora基础知识 二.Xilinx平台Aurora IP介绍(二)时钟与复位 三.Xili ...

  7. AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(二):配置WinClient分布式运行环境...

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  8. Linux操作系统下三种配置环境变量的方法(linux下几种profile执行顺序)

    http://www.linuxeden.com/html/sysadmin/20080424/56879.html 现在使用linux的朋友越来越多了,在linux下做开发首先就是需要配置环境变量, ...

  9. [zz]Linux操作系统下三种配置环境变量的方法

    个人的总结: 设置了/etc/profile 和 ~/.bashrc 之后,使用了source 命令,是可以echo添加的变量,但是用getenv读不出来,然后使用env命令也显示不出来,是因为没有e ...

最新文章

  1. HTML中常见的各种位置距离以及dom中的坐标讨论
  2. PHP5.5.13 + Apache2.4.7安装配置流程详解
  3. Windows Phone 7 中的页面和弹出框
  4. python下处理win和linux分行符
  5. 创建和准备Oracle样例数据库
  6. python中的类和对象
  7. unity2018关联不到vs_现实VS真爱:远嫁的幸福和悲哀
  8. 计算机语言中tc是什么,新人必须了解的几个TC常用语和脚本基础知识!
  9. JavaScript 删除某个数组中指定的对象
  10. AMD规范和requirejs入门
  11. 实战Python:详解利用Python和Pygame实现飞机大战
  12. 使用回溯算法结合递归树+备忘录解决01背包问题
  13. python制作自动交易软件-Python语言之一位程序员写了一个自动化交易程序,躺着玩,两年就挣了两百万!...
  14. 超细!详解AD13:如何从零开始画出一个PCB(电路板)
  15. 【毕业论文】参考文献的引用格式
  16. mac无法读取移动硬盘怎么办?mac怎么使用ntfs硬盘
  17. 大数据发展趋势十个大方向
  18. 白泽六足机器人导航贴(开源)
  19. 建设工程管理系统(二)
  20. 阿里云 mysql tps_MySQL_tps

热门文章

  1. 远程桌面连接出现CredSSP的解决方法
  2. pycharm远程开发上传文件No files or folders found to process
  3. 动画壁纸 LiveWallpaper 0.3
  4. ntp服务器不稳定,什么是ntp服务器?搭建NTP服务器出现的一些问题
  5. 华为nova8pro鸿蒙系统怎么看,华为nova8Pro安兔兔跑分多少-华为nova8Pro安兔兔跑分详情...
  6. Python各种考试题库(考生回忆版)速来查看!
  7. cmd下禁用启用网络命令
  8. 如何解决AirPods无法连接或充电问题?
  9. 作为程序员,我都逛了哪些技术网站?(收藏篇)
  10. Java实习生在工作中需要学一些什么技能