Xlinx相关原语讲解导航页面

news2024/12/24 1:11:15

  原语就是对FPGA底层器件的直接调用,与IP功能是类似的,将原语的参数变成IP配置时的GUI界面参数,可能会更加直观。IP的缺陷在于繁杂,比如SelectIO IP内部包含IDDR、ODDR等等IO转换的功能,如果只想使用单沿转双沿一个功能,那么调用SelectIO IP相比直接使用IDDR原语会麻烦很多。

  手册中关于原语的讲解其实是比较枯燥的,在实际使用时,还需要与vivado的Default Layout界面相结合,知道该原语在FPGA中的位置,相关接口的走线。比如IDDR、ISERDESE、IBUFDS、IDELAYE、IOB、ILOGIC这些器件的区别,物理位置分布,输入输出信号连接等等,只有搞懂这些关系,才能真正的灵活应用。

  因此我在讲解每个原语的时候都会去通过Default Layout界面分析该原语的位置,以及与其他原语的位置关系,从而理解有些IDDR和ISERDESE会共用ILOGIC资源,不能同时使用,这也是两个器件都能实现双沿采样的一个原因。

  另外为什么IDDR输入不能用ILA抓取?这也可以从Default Layout界面走线分析得到结果,因为IDDR输入来自IOB,并没有进入FPGA逻辑单元,而ILA只能通过可编程逻辑资源去抓取逻辑部分的信号。


  首先需要通过下文了解原语是什么,以及xilinx的芯片有哪几类常规bank,zynq 7000系列哪些是K7架构,哪些是A7架构,HP bank和HR bank的区别,以及高速收发器GTX和GTP。

xilinx原语及bank简介


1、IO相关原语

  FPGA内部均使用单端信号,但是经常会使用LVDS等差分信号,此时在IOB处就需要使用IBUFDS将外部输入差分信号转换为单端信号给内部使用,使用OBUFDS将单端输出信号转换为差分输出信号。

  同时需要注意IBUFGDS是时钟专用的差分转单端原语。最后需要通过Default Layout去查看这些原语的具体位置,以及怎么实现单端和差分转换的,要留下印象。

Xilinx原语详解——IBUFDS & OBUFDS

在这里插入图片描述


  多数人应该都听说过双沿传输,但是FPGA内部逻辑处理的数据均是单沿传输,如果要处理双沿传输的输入数据,需要通过IDDR原语将双沿信号转换为单沿信号,之后才能传入FPGA内部逻辑,进行处理。

下面是IDDR原语的讲解及仿真、上板测试,重点需要注意IDDR的位置,使用的资源,以及ILOGIC怎么用作IFD,也就是将IDDR用作D触发器,使得输入路径足够短。

xilinx原语介绍及仿真——IDDR


  外部信号进入FPGA管脚,到达IDDR输入端的路径是固定的,如果要实现多个信号的对齐,是无法像内部逻辑那样,通过调节器件位置和走线长度来达到延迟目的的,因此xilinx在提供了一个原语IDELAYE,通过设置该原语的参数,可以调节输入信号的延迟。

xilinx原语介绍及仿真——IDELAYE2 & IDELAYCTRL


  关于信号输入,还有一个ISERDESE原语,可以将串行的单沿/双沿数据转换为并行的单沿数据,如果需要进行串并转化和双沿采样则使用ISERDESE原语。如果只需要双沿采样,则使用IDDR即可。

  在此之前,博客上几乎没有文章详细说明该原语的对齐信号的使用,因此写了这篇文章,主要是理解bitslip信号的使用以及原语。

xilinx原语详解及仿真——ISERDESE2


  前面是输入端口的一些原语,输出端口也有对应的原语,比如将单沿信号转换为双沿输出的原语ODDR。

  需要详细了解ODDR的位置,才能知道其输出为什么不能作为ILA的输入,以及了解ODDR用作OFD的方式。

xilinx原语详解及仿真——ODDR


如果是HR bank,则OLOGIC输出直接与IOB相连,如果是HP bank,则OLOGIC与IOB之间可以使用ODELAYE进行延时,该原语的使用和相关参数与IDELAYE基本一致。

xilinx原语介绍及仿真——ODELAYE2


  IO相关的最后一个原语是并串转换的OSERDESE,可以将单沿传输的并行信号转换为单沿或双沿传输的串行数据,串行速率与芯片结构和速度等级有关。

  注意OSERDESE的位置,会发现其与ODDR和OFB位置一致,共同使用OLOGIC资源,因此一个信号只能使用其中一个原语,不能同时使用OSERDESE、ODDR、OFB。

xilinx原语详解及仿真——OSERDESE2


2、时钟资源相关原语

  通过一篇文章讲解BUFG、BUFH、BUFR、BUFIO、BUFMR的区别,以及使用方式。总体规律是作用范围越大,延时越大,对于IDDR等时钟一般使用该时钟区域的BUFIO,尽可能减小时钟延时。

  要注意各个时钟资源的输入和能够驱动的资源限制,文中每个原语都进行了详细说明,最后还要知道每个bank的时钟管脚。其实最后的时钟资源分布图概括了整篇文章的讲解,只需要理解图21即可。

【惊喜揭秘】xilinx 7系列FPGA时钟区域内部结构大揭秘,让你轻松掌握!


3、原语使用

  前文讲解了那么多原语,都没有使用,肯定记不住的,后面几篇文章都使用到了这些原语,可以看看,之后就知道该如何使用这些原语,如何举一反三。

  下面这篇文章是HDMI输出图像显示的一个案例,最终需要将单沿传输的10位并行信号转换为双沿采样的串行信号输出,使用ODDR结合用户逻辑完成转换。

基于FPGA的HDMI编码模块设计(包含工程源文件)


  对于上面的转换,其实使用OSERDESE会更加方便,不需要其余用户逻辑即可实现,如下所示。

基于FPGA的HDMI编码模块设计——OSERDESE2


  上述案例都只使用了其中一个原语,比较简单,下文是千兆以太网的GMII和RGMII转换模块,RGMII双沿采样、而GMII是单沿采样。

  在RGMII转GMII时,使用了IDDR、IDELAYE及IDELAYCTRL原语,为了减小时钟走线延时,IDDR时钟使用了BUFIO原语,同时时钟还要输出给其他模块使用,使用BUFG原语。

  在GMII转RGMII时,只使用了ODDR,不使用ODELAYE的原因是HR bank不具有该原语,不好兼容。

基于FPGA的GMII与RGMII接口相互转换(包含源工程文件)

  在ISERDESE讲解时也使用了BUFIO和BUFR原语,后续在讲解GT收发器相关知识的时候会涌动差分转单端相关原语,后续在更新相关知识。


  如果对文章内容理解有疑惑或者对代码不理解,可以在评论区或者后台留言,看到后均会回复!

  如果本文对您有帮助,还请多多点赞👍、评论💬和收藏⭐!您的支持是我更新的最大动力!将持续更新工程!

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

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

相关文章

Leetcode刷题-字符串详细总结(Java)

字符串 字符串可能在算法处理上面和数组是类似的,但是String和数组的数据结构还是有一些不一样的 1、反转字符串 344. 反转字符串 - 力扣(LeetCode) 双指针的经典应用,两个指针同时向中间移动 public void reverseString(char[…

C语言进阶课程学习记录-第20课 - 链接过程简介

C语言进阶课程学习记录-第20课 - 链接过程简介 链接器静态链接实验-静态链接源代码生成目标文件打包生成静态库文件直接编译使用静态库编译 动态链接实验-动态链接源代码生成动态链接库文件直接编译使用动态链接库编译运行test.out删除dlib.so运行test.out 小结 本文学习自狄泰…

【算法】二分算法题

个人主页 : zxctscl 如有转载请先通知 题目 1. 704. 二分查找1.1 分析1.2 代码 2. 34. 在排序数组中查找元素的第一个和最后一个位置2.1 分析2.2 代码 3. 35. 搜索插入位置3.1 分析3.2 代码 4. 852. 山脉数组的峰顶索引4.1 分析4.2 代码 5. 153. 寻找旋转排序数组中…

nexus设置s3存储

问题 因为我的nexus是安装在EC2上面,需要利用s3的存储能力,为nexus提供存储服务。 步骤 准备s3桶 输入桶名,创建s3桶,如下图: 创建桶读写策略 具体内容如下: {"Version": "2012-10-1…

【数据分享】我国第七次人口普查的100m分辨率人口栅格数据(免费获取\tif格式\2020年)

人口空间分布数据是我们在各项研究中经常使用的数据。之前我们分享过来源于LandScan数据集的2000-2022年的1km精度的人口空间分布栅格数据(可查看之前的文章获悉详情)! 相较于LandScan全球人口数据集,我国历次人口普查的数据对于…

AI服务平台replicate

Replicate是一个提供优秀AI模型和工具的平台,旨在帮助用户实现各种人工智能任务。该平台汇集了来自各个领域的顶尖模型,涵盖了文本到图像生成、语言模型、图像编辑、超分辨率等多个领域。用户可以通过Replicate平台快速获取和应用先进的模型,…

【C++】优先级队列(priority_queue)的用法与实现

目录 一、概念: 二、仿函数(Functor): 概念: 应用: 三、底层实现: 基本操作: 完整代码: 测试示例: 一、概念: 优先级队列(pri…

小白水平理解面试经典题目1431. Kids With the Greatest Number of Candies【Array类】

个人专栏 🤺 leetcode 🧗 Leetcode Prime 🏇 Golang20天教程 🚴‍♂️ Java问题收集园地 🌴 成长感悟 欢迎大家观看,不执着于追求顶峰,只享受探索过程 1431. 拥有最多糖果的孩子 小白渣翻译 一…

蓝桥杯刷题-17-平方差-打表+数学⭐(⊙o⊙)

之前的题目:最大也就到2e5左右。1e9的数据范围就意味着,即使是O(n)的复杂度,也会超时。此时可以考虑使用数学方法进行解题。 ❗打表:利用电脑去找一些合法答案,然后在这些合法答案中找规律。 ⭐打表后找到的规律: (1)好像所有的奇数都是合法…

spikingjelly训练自己的网络---量化 --测试

第二个 但是我发现,都要反量化,因为pytorch是只能支持浮点数的。 https://blog.csdn.net/lai_cheng/article/details/118961420 Pytorch的量化大致分为三种:模型训练完毕后动态量化、模型训练完毕后静态量化、模型训练中开启量化,…

Java 解决 Process 执行命令行命令报【CreateProcess error=2, 系统找不到指定的文件。】错误问题

目录 问题 问题代码 解决方案 判断操作系统 问题 使用 Process 执行命令行命令时,报 CreateProcess error2, 系统找不到指定的文件。但明明指定的文件是存在的。而且这种错误只在 IDEA 中运行会报错,打包后直接 java -jar 运行就能正常运行&#xf…

国产DSP FT-M6678开发-中断开发

全局中断控制器(CIC) FT-M6678 芯片集成了众多的外设,这些外设都可产生中断事件源,这些中断事件如何被服务取决于用户的特殊应用。在FT-M6678 芯片中,EDMA 和CorePac 都能够为事件服务,为了最大限度的增加系…

vue3第十六节(keep-alive 内置组件)

keep-alive 1、目的 在使用组件时,有时我们需要将组件进行缓存,而不是重新渲染,用以提高性能,避免重复加载DOM,提升用户的体验; keep-alive 组件可以做到这一点,它允许你缓存组件实例&#xf…

家用洗地机哪个牌子好?四大热销机型推荐,值得推荐!

随着科技的进步,洗地机在日常生活中能够帮助人们省时省力地打扫卫生,但市面上出现了各种各样的洗地机,好坏参差不齐,选择一个好品牌的洗地机非常重要,因为它们有着可靠的质量保证。那市面上如此众多的洗地机品牌&#…

Python爬虫之分布式爬虫

分布式爬虫 1.详情介绍 分布式爬虫是指将一个爬虫任务分解成多个子任务,在多个机器上同时执行,从而加快数据的抓取速度和提高系统的可靠性和容错性的技术。 传统的爬虫是在单台机器上运行,一次只能处理一个URL,而分布式爬虫通过将…

关于阿里云centos系统下宝塔面板部署django/中pip install mysqlclient失败问题的大总结/阿里云使用oss长期访问凭证

python版本3.12.0 问题1 解决方案 sudo vim /etc/profile export MYSQLCLIENT_CFLAGS"-I/usr/include/mysql" export MYSQLCLIENT_LDFLAGS"-L/usr/lib64/mysql" Esc退出编辑模式 :wq退出并且保存 问题二 说是找不到 mysql.h头文件 CentOS ‘…

【Python】不会优雅的记日志,你又又Out了!!!

1. 引言 在日常开发中,大家经常使用 print 函数来调试我们写的的代码。然而,随着打印语句数量的增加,由于缺乏行号或函数名称,很难确定输出来自何处。而且随着print语句的增多,调试完代码删除这些信息的时候也比较麻烦…

【动态规划-线性dp】【蓝桥杯备考训练】:乌龟棋、最长上升子序列、最长公共子序列、松散子序列、最大上升子序列和【已更新完成】

目录 1、乌龟棋 2、最长上升子序列 3、最长公共子序列 4、松散子序列 5、最大上升子序列和 1、乌龟棋 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物。 乌龟棋的棋盘只有一行,该行有 N 个格子,每个格子上一个分数(非负整…

植物大战僵尸Python版,附带源码注解

目录 一、实现功能 二、安装环境要求 三、如何开始游戏 四、怎么玩 五、演示 六、部分源码注释 6.1main.py 6.2map.py 6.3Menubar.py 七、自定义 7.1plant.json 7.2zombie.json 一、实现功能 实施植物:向日葵、豌豆射手、壁桃、雪豆射手、樱桃炸弹、三…

笔记-Building Apps with the ABAP RESTful Application Programming Model-Week3

Week3 Unit 1: The Enhanced Business Scenario 本节介绍了将要练习的demo的业务场景,在前两周成果的基础上,也就是只读列表,也可以说是报表APP基础上启用了事务能力,也就是CURD以及自定义业务功能的能力,从创建基本的behavior definition,然后behavior definition proj…