Xlinx相关原语讲解导航页面

2024-04-09 22:36

本文主要是介绍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收发器相关知识的时候会涌动差分转单端相关原语,后续在更新相关知识。


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

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

这篇关于Xlinx相关原语讲解导航页面的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/889395

相关文章

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

log4j2相关配置说明以及${sys:catalina.home}应用

${sys:catalina.home} 等价于 System.getProperty("catalina.home") 就是Tomcat的根目录:  C:\apache-tomcat-7.0.77 <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /> 2017-08-10

Node Linux相关安装

下载经编译好的文件cd /optwget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.gztar -xvf node-v10.15.3-linux-x64.tar.gzln -s /opt/node-v10.15.3-linux-x64/bin/npm /usr/local/bin/ln -s /opt/nod

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

zookeeper相关面试题

zk的数据同步原理?zk的集群会出现脑裂的问题吗?zk的watch机制实现原理?zk是如何保证一致性的?zk的快速选举leader原理?zk的典型应用场景zk中一个客户端修改了数据之后,其他客户端能够马上获取到最新的数据吗?zk对事物的支持? 1. zk的数据同步原理? zk的数据同步过程中,通过以下三个参数来选择对应的数据同步方式 peerLastZxid:Learner服务器(Follo

rtmp流媒体编程相关整理2013(crtmpserver,rtmpdump,x264,faac)

转自:http://blog.163.com/zhujiatc@126/blog/static/1834638201392335213119/ 相关资料在线版(不定时更新,其实也不会很多,也许一两个月也不会改) http://www.zhujiatc.esy.es/crtmpserver/index.htm 去年在这进行rtmp相关整理,其实内容早有了,只是整理一下看着方

枚举相关知识点

1.是用户定义的数据类型,为一组相关的常量赋予有意义的名字。 2.enum常量本身带有类型信息,即Weekday.SUN类型是Weekday,编译器会自动检查出类型错误,在编译期间可检查错误。 3.enum定义的枚举类有什么特点。         a.定义的enum类型总是继承自java.lang.Enum,且不能被继承,因为enum被编译器编译为final修饰的类。         b.只能定义