五、一个quad同时支持pcie和sfp两种高速接口的ref时钟配置

news2024/10/2 12:25:35

项目描述

  1. 上位机将截图数据通过 XDMA 写入到 FPGA 侧的 DDR 内存区域 1 中
  2. 通过 axi_lite 接口给 axi_read_start 信号,通知 AXI_read 模块启动读取数据,然后通过 GTP TX 模块发送出去。
  3. 经过光纤回环,GTP RX 端接收到数据,送给 AXI_WRITE 模块,然后写入到 FPGA的内存的区域 2 中。
  4. 写完成后通过 AXI write end 的中断信号通知上位机读取区域 2 的数据。

结构框图

在这里插入图片描述
其中pc上位机与fpga之间通过pcie接口相连,axi_read模块读出的数据通过aurora8b10b模块实现并转串输出到光纤接口。

本次项目是在XDMA框架下的桌面采集和PCIE传输项目以及aurora8b10b ip的使用(framing接口下的数据回环测试)两个项目的基础上进行的。
在这里插入图片描述
本章内容:搭建适合pcie和sfp共用一个QUAD的框架

一、common与channel设置

本章重点:实现在a7板子上使用一个QUAD实现两种高速接口(pcie、sfp)框架的搭建。

需要先了解:
高速收发器的原理

分析
本次项目中XDMA和aurora 都需要用到高速接口:
分别是pcie(xmda使用)和sfp(aurora使用),且涉及到两个refclk,这里需要注意一下refclk如何通过QPLL路由到不同的channel。

本项目中两个PCIE通道使用QPLL0(100MHZ),一个SFP通道使用QPLL1(125MHZ)。
在这里插入图片描述
从图中可以看到:高速收发器的时钟从refclk路由到rx or tx接口需要经过两个部分的配置:
1.common 中: QPLL选择哪个refclk,以及提供给哪类高速接口使用(pcie or sfp)

2.channel 中:选择对应QPLL的哪一路(左端 or 右端)

所以重点在于这两个部分如何配置。

1.common的配置

1.1共享xdma的common逻辑:

将xdma中的common资源共享出来(如果不共享的话,common资源就只存在于xdma的ip核中,但是aurora的ip核也需要使用common资源,一个commom需要一个quad,a7开发板只有一个quad,因此如果遇到多个地方需要common资源时,需要将common从某个单独的ip中共享出来,共同使用。)
在这里插入图片描述
后续设计需要使用官方例程,在官方例程上改参数。

  • 生成xdma ip 的example design,打开工程文件,找到imports文件夹,将下图中的四个文件复制到一个新的文件夹中(新建一个gtp_common文件夹放进去),后续修完成后,作为自定义的ip使用
    在这里插入图片描述
    四个文件的关系如下,其中gt_common为顶层
    在这里插入图片描述

1.2修改xdma的qpll_wrapper文件

分析:

  • xdma共享出来的common需要给两个ip提供时钟(xdma、aurora)。
  • 而一个Qpll只能驱动一种类型的高速接口(例如QPLL0驱动pcie的高速接口,就不能驱动sfp光纤的高速接口了),因此common需要输出QPLL0和QPLL1两路时钟,分别驱动两种不同高速接口。
  • 两个高速接口依赖的refclk可以由电路原理图得知(refclk0驱动sfp,refclk1驱动pcie)。 在这里插入图片描述
  • 每个ip使用common时,默认情况下首先使用的是QPLL0,所以原项目的xdma模块中是使用QPLLO驱动pcie的channel,而aurora8b10b模块(官方例程)也默认使用PLL0。(因为xdma中QPLL0驱动了pcie的两个channel,而aurora8b10b中QPLL0驱动了sfp的一个通道,因此直接在xdma的文件中更改QPLL1的设置更方便)

共享出来的common接口情况如下,需要拓展接口:
在这里插入图片描述

查看xdma的qpll_wrapper文件初始情况:
在这里插入图片描述

Q:如何修改xdma的qpll_wrapper文件,QPLL1参数设置的依据是什么?
A:aurora8b10b的commom_wrapper文件(相当于apll_wrapper文件)

在这里插入图片描述
对比xdma的qpll_wrapper文件前后修改情况:
在这里插入图片描述
其中PLL0REFCLKSEL 和 PLL1REFCLKSEL的参数设置依据:
在这里插入图片描述

在这里插入图片描述

1.3修改xdma的gt_common(顶层)文件

在这里插入图片描述

1.4 gt_common ip的封装示意图,参考官方例程完成与XDMA模块和AURORA模块的连线。

在这里插入图片描述

2. channel的配置

xdma的两个pcie的channel已经默认与QPLL0相连了,因此只需要配置aurora的channel,使其连接QPLL1即可。
在这里插入图片描述
由手册可知:
当RXSYSCLKSEL和TXSYSCLKSEL都为1时,由PLL1OUTCLK 和 PLL1OUTREFCLK驱动channel。

具体操作如下:
打开aurora的ip,找到gt文件:
在这里插入图片描述
修改参数如下:
在这里插入图片描述

总结两个高速接口的ref时钟配置情况:

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

今天的一件小事,亲身感受:付费是提高效率的重要途径

今天需要修改一个单页网站源码,有一个小问题困住我3个小时了。 毕竟我也不是专业的,没有系统学习过这些,搜答案都不知道怎么搜哈哈 吃过午饭,想着不能这么耗下去了,于是及时去了某宝,找到一个修改代码的 …

搭建nexus上传jar包,并结合jenkins运行项目

一、搭建nexus 1、docker拉取镜像 需要将docker原更新一下 https://blog.csdn.net/qx020814/article/details/140908006?spm1001.2014.3001.5502 docker pull sonatype/nexus3 创建nexus挂载文件、增加权限: mkdir docker_nexus3 mkdir docker_nexus3/nexus-data c…

TreeSize:免费的磁盘清理与管理神器,解决C盘爆满的燃眉之急

目录 TreeSize:免费的磁盘清理与管理神器,解决C盘爆满的燃眉之急 一、TreeSize介绍 二、下载安装TreeSize 2.1、下载地址 2.2、下载步骤 ​2.3、安装步骤 三、professional版的TreeSize试用 3.1、分析磁盘空间 3.2、显示拓展名统计信息 3.3、显…

将本地的业务写成成可供RPC远程调用的方法

第一步:首先我们先定义proto文件,这些proto文件将会为远程调用者提供调用的方法,为login方法。 2.重写UserServiceRpc类中的Login方法。 在Login中做的操作主要是,得到requst里面的参数,然后调用本地的Login方法&#…

可解释性终极追问,什么才是第一性解释?20篇CCF-A+ICLR论文给你答案

一、前言 长期以来,我们团队一直在思考可解释性领域的一个终极问题,即什么才是解释性领域的第一性原理?所谓第一性原理,目前没有一个被广泛接受的框架,世上本无路,我们需要逐渐去定义这样一个路。我们需要在…

Linux系统中的高级内核模块调试技术

引言 在Linux系统中进行高级内核模块开发时,调试是不可或缺的重要环节。调试技术能够帮助开发人员发现和解决代码中的错误和问题,提高开发效率和代码质量。本文将深入探讨Linux系统中高级内核模块调试的技术和方法,包括常用的调试工具、调试…

JAVA—面向对象编程高级

学习了一定基础后,开始更加深入的学习面向对象,包含static,final两个关键字,面向对象编程三大特征之继承和多态。以及对于抽象类,内部类,接口,枚举,泛型的学习。 目录 1.static (…

cdn 内容分发网络

cdn 内容分发网络 CDN的全称是Content Delivery Network,即内容分发网络。 其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层…

Milvus与Zilliz Cloud:向量数据库高可用性的双重飞跃

向量数据库高可用性的重要性及其在现代数据分析中的关键作用 在数据爆炸式增长的今天,企业对于高效、准确地处理和分析大规模数据集的需求日益迫切。尤其是在人工智能、机器学习、图像识别、自然语言处理等领域,向量数据库因其对高维数据的高效存储与检索能力,成为了不可或…

【数据结构算法经典题目刨析(c语言)】括号匹配问题(图文详解)

💓 博客主页:C-SDN花园GGbond ⏩ 文章专栏:数据结构经典题目刨析(c语言) 目录 一、题目描述 二、解题思路 三、代码实现 一、题目描述 二、解题思路 问题要求将三种类型括号匹配,其中包括顺序匹配和数量匹配 使用栈的后进先…

Linux压缩命令:zip命令详解

目录 一、概述 二、术语 三、基本语法 1、语法 2、常用选项 四、选项和示例 1. -r - 递归压缩目录及其子目录。 2. -j - 只加入文件而不保留目录结构。 3. -m - 压缩后从文件系统中删除原文件。 4. -u - 更新已存在的 ZIP 文件中的文件。 5. -q - 静默模式&#xff…

C语言指针(2)

今天我们接着前两天的内容继续讲解 一、数组名的理解 1、&arr[0]与arr 有时候我们需要获取数组首元素,有两种方法可以获取。 使用这两种方法都可以获得数组首元素&arr[0],arr。 int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10};printf(&…

Ubuntu安装nvidia-docker并使用的正确方式

Ubuntu安装docker: ubuntu(24.04)以及WSL2安装docker的详细教程_unbantu安装docker-CSDN博客文章浏览阅读646次,点赞5次,收藏3次。默认情况下,只有root用户和docker组的用户才能运行Docker命令。我们可以将当前用户添加到docker组,以避免每次使用Docker时都需要使用sudo。…

Undefined symbol vApplicationGetTimerTaskMemory (referred from timers.o).

在使用FreeRTOS中的cubemx配置RTC时钟时,配置完毕出现这个问题, Error: L6218E: Undefined symbol vApplicationGetTimerTaskMemory (referred from timers.o). 链接器在timers.o目标文件中发现了一个未定义的符号vApplicationGetTimerTaskMemory。这个…

深度学习复盘与论文复现F

文章目录 1、Environment construction1.1 macos conda1.2 macos PyTorch1.3 iTerm settings1.4 install jupyter 2、beam search2.1 greedy search2.2 exhaustive search2.3 beam search 3、Attention score3.1 Masking softmax operation3.2 Additive attention3.3 Zoom dot …

《Milvus Cloud向量数据库指南》——Zilliz Cloud 高可用性深度解析:赋能GenAI应用,引领非结构化数据新纪元

在人工智能与大数据技术日新月异的今天,非结构化数据的处理与分析已成为推动行业智能化转型的关键驱动力。Zilliz Cloud,作为基于开源向量数据库Milvus构建的全托管解决方案,不仅革新了非结构化数据的存储与查询方式,更以其卓越的高可用性设计,为开发人员构建高效、可靠的…

国内的自闭症康复学校:星贝育园的独特干预法

在国内自闭症康复的广袤领域中,星贝育园宛如一颗璀璨的明星,凭借其创新而卓越的教育理念以及独树一帜的干预方法,为特殊儿童及其家庭点亮了希望之光,带来了深刻而积极的转变。 星贝育园团队精心打造的 CBM 干预法,无疑…

计算机毕业设计选题推荐-校园消费点评系统-Java/Python项目实战

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

最好用的深拷贝方法?分享 1 段优质 JS 代码片段!

本内容首发于工粽号:程序员大澈,每日分享一段优质代码片段,欢迎关注和投稿! 大家好,我是大澈! 本文约 900 字,整篇阅读约需 1 分钟。 今天分享一段优质 JS 代码片段,轻松实现了对象…

【JVM基础10】——垃圾回收-JVM垃圾回收算法有哪些?

目录 1- 引言:垃圾回收算法2- ⭐核心:三种垃圾回收算法2-1 标记清除法优缺点 2-2 标记整理算法优缺点 2-3 复制算法优缺点 3- 小结3-1 JVM 常见的垃圾回收算法有哪些? 1- 引言:垃圾回收算法 JVM 在识别了对象什么时候可以被回收之…