Xlinx相关原语讲解导航页面

  原语就是对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.rhkb.cn/news/307258.html

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

相关文章

多因子模型的数据处理

优质博文:IT-BLOG-CN 数据处理的基本目的是从多量的、可能是杂乱无章的、难以理解的数据中抽取并推导出有价值、有意义的数据。特别是金融数据,存在数据缺失,不完整以及极端异常值等问题,对于我们的分析和建模影响很多。 对于我…

逆境突围:网络安全寒冬下售前的效率革命与AI赋能

在网络安全行业遭遇严冬之际,众多企业纷纷勒紧裤腰带,竭力挺过这段寒风凛冽的时期。我朋友所在的网安公司亦未能幸免于这场经济寒潮的冲击,不少售前同事无奈地提前踏上了职业生涯的“毕业”之路,留下的人则如同雪中孤松&#xff0…

【配电网故障定位】基于二进制蝗虫优化算法的配电网故障定位 12节点配电系统故障定位【Matlab代码#75】

文章目录 【获取资源请见文章第5节:资源获取】1. 配电网故障定位2. 二进制蝗虫优化算法3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节:资源获取】 1. 配电网故障定位 配电系统故障定位,即在配电网络发生故障的时候&am…

视频号小店究竟有什么秘密,值得商家疯狂入驻,商家必看!

大家好,我是电商花花。 我们都知道视频号和抖音本身都是一个短视频平台,但是随着直播电商的发展,背后的流量推动逐步显露出强大的红利市场和变现机会。 视频号小店流量大和赚钱之外,还非常适合普通人创业。 这也使得越来越多的…

【JAVA基础篇教学】第十篇:Java中Map详解说明

博主打算从0-1讲解下java基础教学,今天教学第十篇:Java中Map详解说明。 在 Java 编程中,Map 接口代表了一种键值对的集合,每个键对应一个值。Map 接口提供了一系列操作方法,可以方便地对键值对进行增删改查等操作。本…

【微信小程序】canvas开发笔记

【微信小程序】canvasToTempFilePath:fail fail canvas is empty 看说明书 最好是先看一下官方文档点此前往 如果是canvas 2d 写canvas: this.canvas,,如果是旧版写canvasId: ***, 解决问题 修改对应的代码,如下所示,然后再试试运行&#x…

要不是情绪管理得当,我早就拍桌子走人了!!!——早读(逆天打工人爬取热门微信文章解读)

身体是革命的本钱! 引言Python 代码第一篇 洞见 中年以后 换个脾气 就是换条命第二篇 人民日报 来了新闻早班车要闻社会政策 结尾 年轻时的我们 如同初生的牛犊 无所畏惧 岁月却教会我们谨慎与尊重 引言 左边突出的神经开始疯狂跳动 不断提醒我 你该休息了 不能再放…

pyside6的QSpinBox自定义特性初步研究(二)

当前的需求是,蓝色背景的画面,需要一个相对应色系的QSpinBox部件。已有的部件风格是这样的,需要新的部件与之般配。 首先新建一个QDoubleSpinBox,并定义其背景色和边框: QDoubleSpinBox { color: white; border:1px…

uniapp 地图分幅网格生成 小程序基于map组件

// 获取小数部分 const fractional function(x) {x Math.abs(x);return x - Math.floor(x); } const formatInt function(x, len) {let result x;len len - result.length;while (len > 0) {result 0 result;len--;}return result; }/*** 创建标准分幅网格* param …

【科研入门】评价指标AUC原理及实践

评价指标AUC原理及实践 目录 评价指标AUC原理及实践一、二分类评估指标1.1 混淆矩阵1.2 准确率 Accuracy定义公式局限性 1.3 精确率 Precision 和 召回率 Recall定义公式 1.4 阈值定义阈值的调整 1.5 ROC与AUC引入定义公式理解AUC算法 一、二分类评估指标 1.1 混淆矩阵 对于二…

【MYSQL】MySQL整体结构之系统服务

一、系统服务层 学习了MySQL网络连接层后,接下来看看系统服务层,MySQL大多数核心功能都位于这一层,包括客户端SQL请求解析、语义分析、查询优化、缓存以及所有的内置函数(例如:日期、时间、统计、加密函数...&#xff…

【Java8新特性】二、函数式接口

这里写自定义目录标题 一、什么是函数式接口二、自定义函数式接口三、作为参数传递 Lambda 表达式四、四大内置核心函数式接口1、消费形接口2、供给形接口3、函数型接口4、断言形接口 一、什么是函数式接口 只包含一个抽象方法的接口,称为函数式接口。你可以通过 L…

2024年天津市安全员C证证模拟考试题库及天津市安全员C证理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年天津市安全员C证证模拟考试题库及天津市安全员C证理论考试试题是由安全生产模拟考试一点通提供,天津市安全员C证证模拟考试题库是根据天津市安全员C证最新版教材,天津市安全员C证大纲整理…

html+javascript,用date完成,距离某一天还有多少天

图片展示: html代码 如下: <style>* {margin: 0;padding: 0;}.time-item {width: 500px;height: 45px;margin: 0 auto;}.time-item strong {background: orange;color: #fff;line-height: 100px;font-size: 40px;font-family: Arial;padding: 0 10px;margin-right: 10px…

私有化即时通讯软件,WorkPlus提供的私有化、安全通讯解决方案

在当今信息化快速发展的时代&#xff0c;安全问题已经成为各行各业关注的焦点。特别是在金融、政府单位和芯片等关键行业&#xff0c;信息安全的重要性不言而喻。这些行业涉及到大量的敏感数据和关键信息&#xff0c;一旦发生泄露&#xff0c;可能会对国家安全、企业利益甚至个…

【环境搭建】ubuntu工作站搭建全流程(显卡4090)

安装ubuntu22.04系统 首先&#xff0c;先压缩windows分区&#xff0c;按住Win X快捷键&#xff0c;选择磁盘管理,压缩分区&#xff0c;压缩出新的分区用于安装ubuntu22.04 windows插入系统盘&#xff0c;点击重启&#xff0c;一直按F12,选择系统盘启动方式语言选择chinese–…

K8S哲学 - 常见的资源类型

资源类型 namespace kubectl apply 和 kubectl create kubectl apply是声明式的 和 kubectl create是命令式的对吗 deployment 和 job的区别 k8s 的 lable 的意义

UDP网络程序

上一章中&#xff0c;我们介绍了socket&#xff0c;以及TCP/UDP协议。这一章带大家实现几个UDP协议的网络服务。我们需要一个 服务端和一个客户端。 1.服务端实现 1.1socket函数 #include <sys/types.h> #include <sys/socket.h>int socket(int domain, in…

vue3+ts中判断输入的值是不是经纬度格式

vue3ts中判断输入的值是不是经纬度格式 vue代码&#xff1a; <template #bdjhwz"{ record }"><a-row :gutter"8" v-show"!record.editable"><a-col :span"12"><a-input placeholder"经度" v-model:v…

如何进入Windows 11的安全模式?这里提供详细步骤

如果你在启动 Windows 11 电脑时遇到问题,重新启动到安全模式可能会有所帮助,该模式会暂时禁用驱动程序和功能以使你的电脑更稳定。这是如何做到的。 在启动时进入安全模式 在 Windows 7 及更早版本中,你通常可以在打开电脑后立即按功能键(如 F8)来启动安全模式。Micros…