aurora8b10b ip的使用(framing接口下的数据回环测试)
文章目录
- 一、Aurora8B/10B协议
- 二、时钟、复位与状态指示
- 1、时钟
- 2、复位
- 3、状态指示
- 三、数据发送、接受接口
- (1)AXI4-Stream位排序
- (2)Streaming接口
- (3)Framing接口(帧传输接口)
- 四、ip核配置与使用
- 实验描述:
- ip配置
一、Aurora8B/10B协议
Aurora 协议是一个用于在点对点串行链路间移动数据的可扩展轻量级链路层协议(由Xilinx开发提供)。这为物理层提供透明接口,让专有协议或业界标准协议上层能方便地使用高速收发器。Aurora协议在Xilinx的FPGA上有两种实现方式:8B/10B 与 64B/10B。两个协议大部分相同,主要区别在编码方式上:
- Aurora 8B/10B:将8bit数据编码成10bit数码进行传输,尽量平衡数据中“0”和“1”的个数以实现DC平衡,显然这个编码方式的开销是20%,也就是效率为80%。
- Aurora 64B/10B:将64bit数据编码成66bit块传输,66bit块的前两位表示同步头,主要由于接收端的数据对齐和接收数据位流的同步。同步头有“01”和“10”两种,“01“表示后面的64bit都是数据,“10”表示后面的64bit是数据信息。数据信息0和1不一定是平衡的,因此需要进行加扰,开销较小。
二、时钟、复位与状态指示
1、时钟
高速接口的IO都在MGT bank上面
1个bank有4对Lane,2对差分时钟。
- ref_clk :Aurora IP核是基于GT作为物理层实现的,所以时钟ref_clk就是GT的参考时钟。GT的时钟参考只能使用外部的差分时钟,所以具体的值取决板卡的硬件设计。默认125Mhz。
- INIT CLK :初始化阶段的时钟 ,在上电初始化阶段,可以使用该时钟来驱动一些逻辑。默认值:50Mhz。
- DRP CLK : DRP时钟,动态重配置,一般没用,默认值:50Mhz(通常一个内部模块需要进行配置,使用两种方法:端口控制和配置参数控制。一个常见的应用就是线速率切换。这时候就需要利用DRP端口来调整部分参数的值,然后复位GTX,使GTX工作在不同的线速率下。)
- user_clk_out: 这个时钟,是IP核根据设置的线速率及Lane的位宽计算出来的用户时钟,用户需要传输的数据必须是该时钟域下的数据,否则会存在亚稳态风险。
总结:1、ref_clk 的值根据对应硬件设计的来;
2、INIT CLK 和DRP CLK可以用PLL或者MMCM生成;
3、user_clk_out是用户时钟域,数据收发接口应该工作在此时钟域下。
2、复位
全双工模块下的复位设计:
复位信号有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板子,在实际设计中复位时序如下:
3、状态指示
Aurora IP还提供了一系列的指示接口出来,方便进行调试:
- loopback:回环模式,实际使用一般接到0
- power down:高电平有效。当其为高时,GT会进入非工作、低功耗的模式(类似睡眠模式)。使用的时一般直接拉低。
- lane_up:当对应的Lane初始化完成后,会断言对应的lane_up – -
- channel_up:当Auroa 8b/10b初始化完成后,并且当前已经可以进行数据的传输时,会断言该信号
- hard_err:错误表征应信号,主要是硬件类错误
- soft_err:错误表征应信号,主要是软件类错误
- frame_err: 错误表征应信号,主要是帧类错误
三、数据发送、接受接口
Aurora 8B/10B IP核支持AXI4-Stream协议,并依据是否对AXI4-Stream协议进行再封装来提供两种数据传输接口:Framing 接口(帧传输接口)和Streaming接口(流传输接口)。
- Framing接口(帧传输接口):在AXI4-Stream的基础上添加了帧头、帧尾等控制信号,使得传输更准确,但是会降低传输效率和使用较多资源
- Streaming接口(流传输接口):基本上就是一个非常简化的AXI4-Stream接口,只有数据有效、握手和数据信号,此种方式传输效率高,但无法保证传输的准确性
(1)AXI4-Stream位排序
Aurora 8B / 10B IP核采用升序排列。 首先发送和接收最高有效字节的最高有效位。 下图显示了n字节的Aurora 8B / 10B IP核的AXI4-Stream数据接口示例。
(2)Streaming接口
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接口总结:
- Streaming接口就是经典的AXI4-Streaming接口,没有帧的概念,数据总线上数据长度是不受限制的
- 发送端用户只需要在发送、接收双方完成握手后,即可发送数据,通信双方均可通过握手信号来反压对方;接收端用户仅需要在valid信号有效时从总线上拿数据即可
(3)Framing接口(帧传输接口)
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接口总结:
- Framing接口类似被再封装的AXI4-Streaming接口,IP核自动加入帧头、帧尾,并在固定时间内完成时钟补偿
- 发送端用户只需要在发送、接收双方完成握手后,即可发送数据,通信双方均可通过握手信号来反压对方;接收端用户仅需要在valid信号有效时从总线上拿数据即可
- 由于是帧结构,所以需要有信号来约束帧长度–tlast;
四、ip核配置与使用
实验描述:
使用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细节
ip配置
(1)core options 标签页
(2)GT selections 标签页
(3)shared logic标签页
相关文章:
aurora8b10b ip的使用(framing接口下的数据回环测试)
文章目录 一、Aurora8B/10B协议二、时钟、复位与状态指示1、时钟2、复位3、状态指示 三、数据发送、接受接口(1)AXI4-Stream位排序(2)Streaming接口(3)Framing接口(帧传输接口) 四、…...
如何通过OpenCV判断图片是否包含在视频内?
要判断图片是否包含在视频内,可以使用计算机视觉技术和图像处理方法。这通常涉及特征匹配或模板匹配。以下是一个基于OpenCV的解决方案,通过特征匹配的方法来实现这一目标。 步骤概述 读取视频和图片: 使用OpenCV读取视频文件和图片文件。 …...
大数据基础:Spark重要知识汇总
文章目录 Spark重要知识汇总 一、Spark 是什么 二、Spark 四大特点 三、Spark框架模块介绍 3.1、Spark Core的RDD详解 3.1.1、什么是RDD 3.1.2、RDD是怎么理解的 四、Spark 运行模式 4.1、Spark本地模式介绍 4.2、Spark集群模式 Standalone 4.3、Spark集群模式 Stan…...
Executable Code Actions Elicit Better LLM Agents
Executable Code Actions Elicit Better LLM Agents Github: https://github.com/xingyaoww/code-act 一、动机 大语言模型展现出很强的推理能力。但是现如今大模型作为Agent的时候,在执行Action时依然还是通过text-based(文本模态)后者JSO…...
循环结构(三)——do-while语句
目录 🍁引言 🍁一、语句格式 🚀格式1 🚀格式2 🍁二、语句执行过程 🍁三、实例 🚀【例1】 🚀【例2】 🚀【例3】 🍁总结 🍁备注 &am…...
pandas 或筛选
pandas 或筛选 在Pandas中,可以使用DataFrame.loc方法结合逻辑运算符来实现或筛选。这里提供一个简单的例子: import pandas as pd 创建示例DataFrame df pd.DataFrame({ ‘A’: [1, 2, 3, 4], ‘B’: [5, 6, 7, 8], ‘C’: [9, 10, 11, 12] }) 设定…...
工具(1)—截屏和贴图工具snipaste
演示和写代码文档的时候,总是需要用到截图。在之前的流程里面,一般是打开WX或者QQ,找到截图工具。但是尴尬的是,有时候,微信没登录,而你这个时候就在写文档。为了截个图,还需要启动微信…...
【从零开始一步步学习VSOA开发】快速体验SylixOS
快速体验SylixOS 安装完毕RealEvo-IDE 后,同时也安装了RealEvo-Simulator。RealEvo-Simulator 是一个虚拟运行环境,可以模拟各种体系结构并在其上运行 SylixOS。相比于物理板卡,在 RealEvo-Simulator 进行运行调测更加的方便快捷且成本低廉。…...
Ansible自动化:简化IT基础设施管理的艺术
目录 一.前言 二.Ansible简介 2.1什么是Ansible? 2.2Ansible的主要特点 2.3Ansible的应用场景 三.探索Ansible的高级功能 3.1 高级Playbook特性 3.2 Ansible Vault 3.3 动态Inventory 3.4Ansible Tower(AWX) 3.5模块开发 3.6 Ans…...
【Rust光年纪】探索Rust语言中的WebSocket库和框架:优劣一览
Rust语言中的实时通信利器:WebSocket库与框架全面解析 前言 随着Rust语言的不断发展,其在Web开发领域也变得越来越受欢迎。WebSocket作为实现实时通信的重要技术,在Rust的生态系统中也有多个库和框架提供了支持。本文将介绍几个主流的Rust …...
HTML 基础结构
目录 1. 文档声明 2. 根标签 3. 头部元素 4. 主题元素 5. 注释 6. 演示 1. 文档声明 <!DOCTYPE html>:声明文档类型,表示该文档是 html 文档, 2. 根标签 (1)所有的其他标签都要放在一对根标签中&#…...
多页合同怎么盖骑缝章_电子合同怎么盖骑缝章?
多页合同怎么盖骑缝章?电子合同怎么盖骑缝章? 对于纸质多页合同,盖骑缝章是一种常见的做法,用于确保合同的完整性,防止任何页面被替换或篡改。以下是盖骑缝章的基本步骤: 将所有合同页面平铺在桌面上。用…...
GD 32 IIC通信协议
前言: ... 通信方式 通信方式分为串行通信和并行通信。常见的串口就是串行通信的方式 常用的串行通信接口 常用的串行通信方式有USART,IIC,USB,CAN总线 同步与异步 同步通信:IIC是同步通信,有两个线一个是时钟信号线,一个数数据…...
Spring Task初学
介绍 Spring Task 是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑 为什么要在Java程序中使用Spring Task? 运行效果 cron表达式:一般日和周不会同时出现 入门案例 启动类添加注解EnableScheduling开始任务调度 创建MyTask类…...
决策树可解释性分析
决策树可解释性分析 决策树是一种广泛使用的机器学习算法,以其直观的结构和可解释性而闻名。在许多应用场景中,尤其是金融、医疗等领域,模型的可解释性至关重要。本文将从决策路径、节点信息、特征重要性等多个方面分析决策树的可解释性&…...
BUGKU-WEB never_give_up
解题思路 F12查看请求和响应,查找线索 相关工具 base64解码URL解码Burp Suit抓包 页面源码提示 <!--1p.html--> 2. 去访问这个文件,发现直接跳转到BUGKU首页,有猫腻那就下载看看这个文件内容吧 爬虫下载这个文件 import requests …...
hive自动安装脚本
使用该脚本注意事项 安装hive之前确定机子有网络。或者yum 更改为本地源,因为会使用epel仓库下载一个pv的软件使用该脚本前提是自行安装好mysql数据库准备好tomcat软件包,该脚本使用tomcat9.x版本测试过能正常执行安装成功,其他版本没有测试…...
unix 用户态 内核态
在UNIX操作系统中,"用户态"和"内核态"是两种不同的运行模式,它们定义了程序在执行时的权限级别: 用户态(User Mode): 用户态是程序运行的常规状态,大多数应用程序在执行时…...
GD32 IAP升级——boot和app相互切换
GD32 IAP升级——boot和app相互切换 目录 GD32 IAP升级——boot和app相互切换1 Keil工程设置1.1 修改ROM1.2 Keil烧录配置 2 代码编写2.1 app跳转2.2 软件重启2.3 app中断向量表偏移 结束语 1 Keil工程设置 1.1 修改ROM GD32内部Flash是一整块连续的内存,但是因为…...
C++11革新之旅:探索C++编程的无限可能
C11革新之旅:探索C编程的无限可能 C11,作为C语言的一个重要标准,为C编程带来了革命性的变革。它不仅引入了众多新特性和改进,还极大地增强了C的表达能力、提高了程序的性能和资源利用率。本文将从多个方面深入探讨C11的新特性&am…...
免费自动化AI视频剪辑工具
下载地址:https://pan.quark.cn/s/3c5995da512e FunClip是一款完全开源、本地部署的自动化视频剪辑工具,通过调用阿里巴巴通义实验室开源的FunASR Paraformer系列模型进行视频的语音识别,随后用户可以自由选择识别结果中的文本片段或说话人&a…...
Linux中安装C#的.net,创建运行后端或控制台项目
安装脚本命令: 创建一个sh文件并将该文件更改权限运行 sudo apt update wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb sudo apt-get upd…...
最长上升子序列LIS(一般+优化)
1. 题目 题目链接: B3637 最长上升子序列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 输入样例: 6 1 2 4 1 3 4 输出样例: 4 说明/提示: 分别取出 1、2、3、4 即可。 2. 具体实现 2.1 一般做法 dp[i]表示第i个位置的…...
【Python系列】Python 协程:并发编程的新篇章
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
详解C/C++输入输出
前言 C/C输入输出很多,在不同的情况会用不同的输入输出,有的题目在输入时可能换一种输入输出就能不会TLE,有的输入可能要循环输入,但是可以换一种输入直接就能把所有数据输入进去。C/C有哪些常用的输入输出,在什么时候…...
AI人工智能开发环境配置
AI人工智能 为什么使用Python来开发AI 人工智能被认为是未来的趋势技术。 已经有了许多应用程序。 因此,许多公司和研究人员都对此感兴趣。 但是这里出现的主要问题是,在哪种编程语言中可以开发这些 AI 应用程序? 有各种编程语言,…...
Tomcat 8.5 下载、安装、启动及各种问题
🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 本期内容主要介绍 Tomcat 8 的安装,以及可能会遇到的问题 文章目录 1. Tomcat 安装2. 可能会遇到的问题2.…...
Harbor系列之5:复制管理
Harbor的镜像复制功能 Harbor 提供镜像复制功能,允许用户以推送和拉取方式在不同 Harbor 仓库之间,以及 Harbor 与非 Harbor 仓库间(如Alibaba ACR、Quay、Aws ECR、Azu热ACR、Docker Registry、Docker Hub等)复制 image、chart …...
V.PS德国VPS详细测评
V.PS的德国机房位于法兰克福,默认接入电信CN2 GIA、联通CUII网络,针对中国大陆进行路由优化处理的。而且是强制移动走联通的CUII链路,确保三网都处在轻负载的网络环境下。 CPU是Intel Xeon Gold 6133 ,启用了BBR,归属德…...
【Vue3】组件通信之自定义事件
【Vue3】组件通信之自定义事件 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋…...
免费空间可以上传网站吗/厦门关键词优化报价
1、赛题名称 剧本角色情感识别 比赛链接:https://www.datafountain.cn/competitions/518 2、赛题背景 剧本对影视行业的重要性不言而喻。一部好的剧本,不光是好口碑和大流量的基础,也能带来更高的商业回报。剧本分析是影视内容生产链条的第…...
网站制作 网站/百度推广一个月多少钱
当一个对象能被多个线程同时看到时,对象的销毁时机变得模糊不清,可能出现多种竞态条件(race condition): 1. 在即将析构一个对象时,从何而知此刻是否有别的线程正在执行该对象的成员函数? 2. …...
wordpress 任意下载/在线分析网站
Window 7以及以上系统的ETW日志自带了一个注册表日志信息的输出,在windows事件查看器的MicrosoftWindows Kernel Registry / Analytic可以看到并且开启或者关闭注册表日志,它的监控操作包括CreateKey_Opt,OpenKey_Opt,DeleteKey_Opt,QueryKey_Opt,SetVal…...
国外做免费的视频网站有哪些/百度经验实用生活指南
实践见真知前提1、建库2、创建orders,trains表3、 常见业务操作3.1 用户购买的订单数3.2 用户在一周中的购买订单数的分布3.3 用户一个订单平均有多少商品3.4 用户某个时间段购买的商品3.5 用户每个购买天中平均购买的商品数3.6 用户最喜爱购买的商品3.7 商品购买数…...
群晖wordpress 外网很慢/营销网络图
很多朋友都有购买平板电脑,有的朋友不想使用原版的系统,想要把平板刷成Windows系统,那么应该如何操作呢?平板电脑刷windows的方法是什么呢?小编这就为大家带来如何把平板刷windows图文步骤。如何把平板刷windows图文步…...
为违法网站做推广进去要几年/神起网络游戏推广平台
今天记录的这两个是链表操作的两个题目 反转链表 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 思路一:采用头插法逆…...