aurora8b10b ip的使用(未完)

news2025/1/10 3:13:59

文章目录

  • 一、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为高表明当前用户发送的数据有效
2)接收端(相对于用户来说):
名称方向时钟域说明
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_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标签页
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1969350.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

输入成绩问题(c语言)

1.问题:期中考试开始了,大家想要取得好成绩,争夺前五名,从键盘输入n个学生成绩(不超过40个),输出每组的前五名的成绩 两行,第一行输入一个整数,表示n个学生(…

springboot学习笔记第一天

springboot的简单了解 Java Spring 是一个开源的轻量级应用框架,在 Java 应用开发中起到了简化开发、提高效率、促进模块化和松耦合、支持技术集成等多重作用,成为了广大企业和开发者首选的企业级 Java 应用开发框架之一。 Spring Boot 是一个基于 Spr…

深度学习中6种loss函数Pytorch API调用示例

自定义数据 import torch import torch.nn as nn import torch.nn.functional as Fbatchsize2 num_class4logitstorch.randn(batchsize,num_class) targettorch.randint(num_class,size(batchsize,))#delta目标分布 target_logitstorch.randn(batchsize,num_class)#非delta目标…

浏览器中的同源策略、CORS 以及相关的 Fetch API 使用

前言 笔者对前端 Web 技术的认真学习,其实开始于与 Fetch API 的邂逅。当时觉得 fetch() 的设计很不错,也很希望能够请求其它网站下的数据并作处理和展示。学习过程中 HTML 和 CSS 都还好说,由于几乎没有 Web 技术的基础,学习 Fe…

vue配置多个环境变量ENV【收藏版】

vue配置多个环境变量 1. 创建环境变量文件 在你的Vue项目根目录下,你可以创建以下环境变量文件: .env:所有环境都会加载的通用变量。 .env.local:本地覆盖,不会被git跟踪。 .env.[mode]:只有指定模式才会…

1007 Maximum Subsequence Sum(Java)

题目 解释 题目说的就是给你一串K个数字,让你找到连续的和最大的子串,同时输出子串的和、子串起始的元素、子串末尾的元素,如果K个数字全是负数,输出子串和为0、子串起始元素为整个字符串的第一个元素,子串末尾元素为…

CompletableFuture并行编程生产问题处理

前提 本文章是在项目中发现一些同学对并行编程的思想理解,或者说对代码的执行逻辑有些理解偏颇的地方。特整理此文章进行分享,希望有同样困惑的小伙伴能够对此类问题有一个清晰的理解。 在此不会介绍CompletableFuture对库函数用法,因为库函数…

XSS-labs靶场(超详解)1-20关——附原码

level1 原码 <!DOCTYPE html><!--STATUS OK--><html> <head> <meta http-equiv"content-type" content"text/html;charsetutf-8"> <script> window.alert function() { confirm("完成的不错&#xff0…

【Java】字符串StringBuilder类和Stringjoiner类(013)

目录 ♦️StringBuilder类 &#x1f38f;StringBuilder构造方法 &#x1f421;无参构造 &#x1f421;有参构造 &#x1f38f;SringBuilder常用方法 &#x1f38f;StringBuildre类练习题&#xff1a; &#x1f421;对称字符串 &#x1f421;拼装字符串 ♦️Stringjoine…

(Python)内存管理

前言 内存泄漏在编程中是一个严重的问题&#xff0c;可能导致程序性能下降、系统不稳定甚至崩溃。 目录 危害 风险 动态内存分配 引用计数 内存池 垃圾回收 设计原则 危害 性能下降&#xff1a;可用内存减少&#xff0c;导致系统频繁进行内存交换&#xff0c;使程序运行…

Netdevops入门之Telnetlib语法案例

1、Telnetlib模块&#xff1a; 支持telnet/ssh远程访问的模块很多&#xff0c;常见的有telnetlib、ciscolib、paramiko、netmiko、pexpect,其中telnetlib和ciscolib对应telnet协议&#xff0c;后面3个对应SSH协议。 ①-通过ENSP环境搭建实验环境 ②-基础语法-telnetlib案例1&…

最优控制、轨迹优化相关笔记、感悟

写在前面 上学期和最近无聊在看一些最优控制、轨迹优化相关的内容&#xff0c;涉及到MIT Russ Tedrake教授的Underactuated Robotics&#xff0c;以及CMU Zachary Manchester教授的Optimal Control&#xff08;两套课程其实挺像的&#xff09;&#xff0c;加起来估计也看了十多…

机器学习算法(二)线性模型

一、线性回归 假设自变量X矩阵有3个特征&#xff0c;因变量是Y矩阵&#xff0c;w是系数矩阵 Y X * w 损失函数&#xff1a;误差平方和函数&#xff08;Y - label&#xff09;** 2 二、逻辑回归 线性回归得到的是一个实数值 z &#xff0c;用sigmoid函数可以将其映射到 0 …

【SQL Server 】SQL Server 网络配置

目录 ​编辑 第3章&#xff1a;SQL Server 网络配置 SQL Server 网络监听器 SQL Server 网络协议 配置 SQL Server 网络协议 示例&#xff1a;配置 SQL Server 使用自定义端口 安全注意事项 第3章&#xff1a;SQL Server 网络配置 SQL Server 网络监听器 SQL Server 通…

php时间 cookie session 文件上传基础

时间和日期 PHP Date&#xff08;&#xff09; 函数 格式// date(format,timestamp) format Required. Specifies the format of the timestamp timestamp Optional. Specifies a timestamp. Default is the current date and time d - 表示每月的某一天&#xff08;01…

反序列化漏洞靶机实战-serial

一.安装靶机 下载地址为https://download.vulnhub.com/serial/serial.zip&#xff0c;安装好后开启靶机&#xff0c;这里并不需要我们去登录&#xff0c;直接扫描虚拟机nat模式下c网段的ip&#xff0c;看看哪个的80端口开放&#xff0c;然后直接去访问 二.查找cookie 访问靶…

Java Try学习

一. 介绍 io.vavr.control.Try 是 Vavr 库的一个类&#xff0c;用于处理可能抛出异常的方法调用&#xff1b;它提供了一种优雅的方式来处理成功和失败的情况&#xff0c;而无需显示地使用 try-catch 块&#xff1b; 简而言之&#xff0c;它可以优雅的实现 try-catch&#xff…

链表【4】

目录 链表删除指定值元素 反转链表&#xff08;静态链表型&#xff09; 链表删除指定值元素 错误1&#xff1a;两个if间没有用else&#xff0c;导致两个都执行了 #include<stdio.h> const int N1005; int n,first,firstid; using namespace std; struct node {int da…

【Vue3】作用域插槽

【Vue3】作用域插槽 背景简介开发环境开发步骤及源码 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日子。本文…

UI界面自动化测试-Selenium

Selenium工作原理 SeleniumAPI 定位元素 Selenium操作对象 **send_keys 在对象上模拟按键输入 ** clear 清除对象输入的文本内容 ** click 点击对象(无限制) submit 提交(用于form表单) ** getText() 用于获取元素的文本信息 getAttribute() 用于获取属性的值 quit 关闭…