Aurora8B10B(一) 从IP配置界面学习Aurora

一. 简介

哈喽,大家好,好久没有给大家写FPGA技术的文章,是不是已经忘记我是做FPGA的啦,O(∩_∩)O哈哈~。

这里将会给大家分享我学习到的第一个高速接口Aurora8B10B,有点复杂,但不是特别复杂,对于第一次接触到高速接口的朋友来说,难点在于细节的把控上,由于资料并不是那么多(也挺多的 ̄□ ̄||),很多新的概念,结构和名词,是第一次接触到,不能够很好的吸收,加上网上的教程不全面,很难有一篇文章对它的各个详细作全面的介绍,而且仿真都是基于官方例程来的,直接忽视了里面的细节。

本篇文章的目的就是教会大家Aurora8B10B 和 Xilinx提供的IP,并且基于自己的工程来进行仿真,不copy官方例程中的任何文件。

二. 从IP配置界面学习Aurora

本次使用的VIvado版本为2022.2,IP的版本为11.1,不同的版本可能会有细微的区别,打开IP的配置界面后,有三个界面需要我们进行配置,下面就依次来介绍这三个界面。

1. Core Options

请添加图片描述

主要配置物理层 和 链路层 这两个模块,其它模块在在初学的时候,可以忽略。

  1. 物理层:
    1. Line Width(Bytes): 线的位宽,也就是你发送每笔数据的位宽
    2. Line Rate(Gbps) : 线速率
    3. GT Refclk(Mhz): GT收发器的参考时钟,它有一个点需要注意,等下会提到
    4. INIT clk(Mhz):对Aurora核进行初始化,一般为50M就可以了
    5. DRP Clk(Mhz): 动态配置时钟,在例化IP后,可以通过DRP接口来对其进行配置,一般例化IP后,其属性就不会动了,所以用的不是那么多,和INIT clk保持一致就可以了。

这里需要注意的一点就是GT Refclk这个信号,由于Aurora这个IP是在GT收发器的基础上再次封装了相关的东西,所以对GT收发器不是很了解的话,有些信号使用细节上会存在问题。通过下图可以知道这个信号需要经过一个IBUFDS_GTE2来进行输入,没有注意的话,可能就会有意想不到的问题。

请添加图片描述
请添加图片描述

  1. 链路层
    1. Dataflow Mode: 配置模式,只发,只收,同时收和发
    2. Interface: 可以理解为用户数据是一帧一帧来的,还是以数据流的形式来的,接口上有无tkeep和tlask信号的区别
    3. Flow Control: 流控制,可以选择两大类UFC和NFC,或者无,UFC就在数据发送的过程中,需要发送一些紧急的数据过去,通过UFC接口就可以将紧急数据发送出去,NFC在同时收和发的模式下才可以使用,发送方发送的过快,而接收方接收的比较慢的话,就需要通过NFC接口告诉发送方发送慢一点。两者在用户发送信号的表现均为将s_axi_tx_tready信号拉低。
    4. Back Channel: 在只发或只收的模式下可以选择,同时收和发的模式下只能为Sidebands,这里没有进行详细的研究。

这一页的配置和选项的理解上应该就没有什么问题了。


2. GT Selections

请添加图片描述

这里配置比较简单,主要是三个信息: 线数选择.GT收发器选择 和GT参考时钟选择。这里芯片我选择的是A7-100T,只有一个GT收发器,所以只需要选择Lanes数和Lanes与GT收发器通道的对应关系即可,参考时钟2是选择不了了,换到K7也是如此。


3. Shared Logic

请添加图片描述

这个界面就两个选项,共享逻辑是否包含在IP里面,这部分设计的知识也是GT收发器里面的,如果选择的是第一个选项包含在核里面,在生成IP的时候,会自动将GTPE2_COMMON这个原语包含在模块内,并且IP top模块会将其输出的gt时钟和其他相关信号在端口输出。如果选择的是第二个选项不包含在核里面,在生成IP的时候,就不会包含这个原语,那么gt相关的信号就需要外部进行输入。选择的时候可以观察一下IP端口信号的变动。

关于共享逻辑可以看下这幅图,共享逻辑的主要功能是将GTREFCLK0时钟通过QPLL后,生成QPLLCLK (QPLLOUTCLK)和QPLLREFCLK这两个时钟给GT收发器的Channel使用。

请添加图片描述

当然这里有点需要注意一下: GTP是没有QPLL和CPLL的,只有PLL0和PLL1,由于使用的是A7芯片,只有GTP,所以这里的细节需要注意一下。另外共享逻辑还可以选择外部输入的参考时钟,但在IP配置的只能选择GTREFCLK0。

请添加图片描述

为什么要叫它共享逻辑呢?怎样共享的呢?A7只有一个GT收发器,体现不了这一点。如果这里有两个GT收发器,第一个选择的是包含在核内,第二个选择的是不包含在核内,那么就可以向下面这样连接起来了,右边的Aurora里面的GT收发器使用的是左边的,而不是它自己的。

请添加图片描述

到这里,IP的配置界面以及相关的细节就给大家讲解清楚,有不对的地方,可以给我留言进行批评指正。


三.小结

本来想一篇文章写完的,但是太难了,太费时间了o(╥﹏╥)o,所以就到此结束啦。

本篇文章主要是通过Aurora8b10b IP创建界面,教大家如何进行配置,以及配置选项中涉及到的疑难点。

下篇文章,以及下下篇中,将带领大家了解Aurora8b10b 在GT的基础上做了那些事情 和 仿真。
欢迎关注公众号 FPGA之旅(下方公众号)。
qq交流群: 649098696

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

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

相关文章

使用vscode的remotessh插件远程连接的时候被要求重复输入密码

问题描述: 需要远程连接服务器,使用ssh,我用到的是vscode里面的remotessh插件。配置好config以后 HostHostNameUserPortIdentifyFile进入到了vscode的密码登录界面,但是一直被要求循环输入密码,很奇怪,去…

论文阅读——DINOv

首先是关于给了提示然后做分割的一些方法的总结: 左边一列是prompt类型,右边一列是使用各个类型的prompt的模型。这些模型有分为两大类:Generic和Refer,通用分割和参考分割。Generic seg 是分割和提示语义概念一样的所有的物体&am…

LLM之Agent(二):BabyAGI的详细教程

BabyAGI是一个 AI 支持的任务管理系统(Python脚本),使用 OpenAI 和 Pinecone API 创建, 优先级排序和执行任务。该系统背后的主要思想是基于先前任务的结果和预定义的目标创建任务。脚本然后使用 OpenAI 的自然语言处理(NLP&#…

leetCode 93.复原 IP 地址 + 回溯算法 + 图解 + 笔记

93. 复原 IP 地址 - 力扣(LeetCode) 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 . 分隔。 例如:"0.1.2.201" 和 "192.168.1.1…

CS 2520nonono

CS 2520nonono WeChat:yj4399_​​​​​ Sina Visitor System High-level●3 Congestion Control Algorithms:○TCP Reno:■additive increase, multiplicative decrease function to adjust window size for every RTTuntil a packet loss is detected○TCP CUBI…

用java实现拼图小游戏

1、了解拼图游戏基本功能: 拼图游戏内容由若干小图像块组成的,通过鼠标点击图像块上下左右移动,完成图像的拼凑。 2、拼图游戏交互界面设计与开发: 通过创建窗体类、菜单、中间面板和左右面板完成设计拼图的交互界面 &#xff…

分享从零开始学习网络设备配置--任务4.3 使用动态路由RIPng实现网络连通

任务描述 某公司使用IPv6技术搭建企业网络,由于静态路由需要管理员手工配置,在网络拓扑发生变化时,也不会自动生成新的路由,因此采用IPv6动态路由协议RIPng实现网络连通,实现任意两个节点之间的通信,并降低…

基于SpringBoot学生读书笔记共享

摘 要 本论文主要论述了如何使用JAVA语言开发一个读书笔记共享平台 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述读书笔记共享平台的当前背景以及系统开发的…

第16关 革新云计算:如何利用弹性容器与托管K8S实现极速服务POD扩缩容

------> 课程视频同步分享在今日头条和B站 天下武功,唯快不破! 大家好,我是博哥爱运维。这节课给大家讲下云平台的弹性容器实例怎么结合其托管K8S,使用混合服务架构,带来极致扩缩容快感。 下面是全球主流云平台弹…

对抗产品团队中的认知偏误:给产品经理的专家建议

今天的产品经理面临着独特的挑战。他们不仅需要设计和构建创新功能,还必须了解这些功能将如何为客户带来价值并推进关键业务目标。如果不加以控制,认知偏差可能会导致您构建的内容与客户想要的内容或业务需求之间不一致。本文将详细阐述产品经理可以避免…

下载MySQL JDBC驱动的方法

说明 java代码通过JDBC访问MySQL数据库,需要MySQL JDBC驱动。 例如,下面这段代码,因为找不到JDBC驱动,所以执行会报异常: package com.thb;public class JDBCDemo {public static void main(String[] args) throws …

网络基础_1

目录 网络基础 协议 协议分层 OSI七层模型 网络传输的基本流程 数据包的封装和分用 IP地址和MAC地址 网络基础 网络就是不同的计算机之间可以进行通信,前面我们学了同一台计算机之间通信,其中有进程间通信,前面学过的有管道&#xff…

Redis之秒杀系统

目录 Redis 秒杀 Mysql数据库设计 Mysql秒杀实现 MysqlRedis秒杀实现 秒杀是一种高并发场景,通常指的是在短时间内(秒级别)有大量用户同时访问某个商品或服务,争相抢购的情景。在这种情况下,系统需要处理大量并发请…

Openai通用特定领域的智能语音小助手

无穷尽的Q&A 钉钉...钉钉... 双双同学刚到工位,报销答疑群的消息就万马纷沓而来。她只能咧嘴无奈的摇摇头。水都还没有喝一口就开始“人工智能”的去回复。原本很阳光心情开始蒙上一层薄薄阴影。在这无休无止的Q&A中,就算你对工作有磐石一般强硬&#xff0…

Linux C/C++高级全栈开发(后端/游戏/嵌入式/高性能网络/存储/基础架构)

Linux C/C高级全栈开发是一个涉及到多个领域的综合性技术要求,需要对Linux系统、C/C编程语言以及各种相关的技术进行深入的理解和应用。 下面是一些涵盖的主要技术领域和技能要点: Linux系统基础:熟悉Linux操作系统的原理和常用命令&#xf…

Linux下的文件IO之系统IO

1. 知识点 读入写出,切记以我们程序为中心向文件或者别的什么东西读入写出(输入流输出流) 人话就是 文件向我们程序就是读入 程序向文件或者别的什么就是写出 2. open打开文件 open.c /****************************************************…

手写VUE后台管理系统5 - 整合状态管理组件pinia

整合状态管理组件 安装整合创建实例挂载使用 pinia 是一个拥有组合式 API 的 Vue 状态管理库。 pinia 官方文档:https://pinia.vuejs.org/zh/introduction.html 安装 yarn add pinia整合 所有与状态相关的文件都放置于项目 src/store 目录下,方便管理 在…

2021年6月3日 Go生态洞察:Fuzzing技术的Beta测试

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

电子学会C/C++编程等级考试2023年03月(三级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:和数(2023.3) 给定一个正整数序列,判断其中有多少个数,等于数列中其他两个数的和。 比如,对于数列1 2 3 4, 这个问题的答案就是2, 因为3 = 2 + 1, 4 = 1 + 3。 时间限制:10000 内存限制:65536输入 共两行,第一行是数列中…

8. 队列

队列(queue)是一种遵循先入先出规则的线性数据结构。顾名思义,队列模拟了排队现象,即新来的人不断加入队列的尾部,而位于队列头部的人逐个离开。 如下图所示,我们将队列的头部称为“队首”,尾部称为“队尾”&#xff…