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.mzph.cn/news/803042.shtml

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

相关文章

ChatGPT全方位解析:如何培养 AI 智能对话技能?

简介 ChatGPT 的主要优点之一是它能够理解和响应自然语言输入。在日常生活中,沟通本来就是很重要的一门课程,沟通的过程中表达的越清晰,给到的信息越多,那么沟通就越顺畅。 和 ChatGPT 沟通也是同样的道理,如果想要C…

[软件使用-Vcftools / Plink ] VCF文件中剔除/提取一个或多个样本,两组方法实现及运算时间比较

官网:VCFtools 参数查看: 提取样本 --keep 剔除样本 --remove # 提取某几个样本 system("vcftools --vcf eg.vcf --keep keep.list --recode --out keep") # keep.list 是由每一行为一个样本ID组成的文件 tips: 运行比较耗时 官网&#xff…

【算法】二分算法题

个人主页 : 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. 寻找旋转排序数组中…

蓝桥杯简单STL

目录 vector vector定义 vector访问 常用函数 size() ​编辑 push_back(num) pop_back() clear 迭代器(iterator) 迭代器定义 遍历数组示例 insert(it, element) erase(it) 标准模板库--STL,它包含了多种预定义的容器、算法和迭代器&…

联想电脑开启虚拟化失败,开启虚拟化却提示还没有开启虚拟化

安装虚拟机的时候, 电脑要开启虚拟化, Intel VT, 去BIOS开启了, 但是依然报错,说虚拟化处于禁用状态。 解决方案: 去联想官方,下载BIOS更新包,更新BIOS。 更新文档: 联…

Harmony鸿蒙南向驱动开发-DAC

DAC(Digital to Analog Converter)是一种通过电流、电压或电荷的形式将数字信号转换为模拟信号的设备。 DAC模块支持数模转换的开发。它主要用于: 作为过程控制计算机系统的输出通道,与执行器相连,实现对生产过程的自…

MySQL数据库 数据库基本操作(四):表的增删查改(下)

1. 联合查询 注:联合查询是面试中的重点,只要考到sql,大多数情况下都考的是联合查询,而且联合查询也是我们学习中的难点. 1.1 笛卡尔积 在实际开发中,数据往往来自不同的表,所以要多表联合查询.多表查询是对多张表的数据笛卡尔积. 它们是两张表的各行数据通过全排列得到的. …

基于SSM+Jsp+Mysql的高校毕业设计管理系统

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

秋招复习笔记——八股文部分:操作系统

笔试得刷算法题,那面试就离不开八股文,所以特地对着小林coding的图解八股文系列记一下笔记。 这一篇笔记是图解系统的内容。 硬件结构 CPU执行程序 计算机基本结构为 5 个部分,分别是运算器、控制器、存储器、输入设备、输出设备&#xf…

轻量的 WebHook 工具:歪脖虎克

本篇文章聊聊轻量的网络钩子(WebHook)工具:歪脖虎克。 写在前面 这是一篇迟到很久的文章,在 21 年和 22 年的时候,我分享过两篇关于轻量的计划任务工具 Cronicle 的文章:《轻量的定时任务工具 Cronicle&a…

运筹学基础(六)列生成算法(Column generation)

文章目录 前言从Cutting stock problem说起常规建模Column generation reformulation 列生成法核心思想相关概念Master Problem (MP)Linear Master Problem (LMP)Restricted Linear Master Problem (RLMP)subproblem(核能预警,非常重要) 算法…

kvm基础命令

前言 一、基础命令 1.虚拟机查看 2.虚拟机开启与关闭 3.虚拟机删除 4.查看虚拟机的配置 5.配置文件重定向 6.命令行登录虚拟机 二、调整虚拟机磁盘大小 三、虚拟机创建快照 四、virsh console报错 总结 前言 今天我们分享一下如何使用kvm基础命令。 一、基础命令 1.虚拟机查看…

杨笛一新作:社恐有救了,AI大模型一对一陪聊,帮i人变成e人

ChatGPT狂飙160天,世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站ai人工智能工具 更多资源欢迎关注 在社交活动中,大语言模型既可以是你的合作伙伴(partner)&#xff0…

MySQL-用户与权限管理:用户管理、权限管理、角色管理

用户与权限管理 用户与权限管理1.用户管理1.1 登录MySQL服务器1.2 创建用户1.3 修改用户1.4 删除用户1.5 设置当前用户密码1.6 修改其它用户密码 2. 权限管理2.1 权限列表2.2 授予权限的原则2.3 授予权限2.4 查看权限2.5 收回权限 访问控制连接核实阶段请求核实阶段 3. 角色管理…

Redis 八种常用数据类型常用命令和应用场景

5 种基础数据类型:String(字符串)、List(列表)、Set(集合)、Hash(散列)、Zset(有序集合)。 3 种特殊数据类型:HyperLogLog&#xff0…

【git】checkout origin/xxx 出现 detached HEAD问题

git 检出远程分支出现Head分离的是什么原因导致的呢?? 因为Head指向了origin的一个commit, 但是这个origin分支你的本地又没有,也就是说你本地没有追踪这个分支,那就要track一下 git checkout -h 看一下有没有追踪的命令 果不其…

服务器开发 Socket 相关函数

Socket 函数 #include <sys/types.h> #include <sys/socket.h> int socket(int domain, int type, int protocol)domain: AF_INET 这是大多数用来产生 socket 的协议&#xff0c;使用TCP或UDP来传输&#xff0c;用IPv4的地址 AF_INET6 与上面类似&#xff0c;不过…

Python高级

不定长参数 位置不定长参数&#xff0c;获取参数args会整合为一个元组 def info(*args):print(arg is, args)print(type(arg) is, type(args))info(1, 2, 3, 4, a, b)# 输出 # arg is (1, 2, 3, 4, a, b) # type(arg) is <class tuple> 关键字不定长参数&#xff0c;&…

蓝桥杯2023年第十四届省赛真题-棋盘

solution1(暴力) 暴力蓝桥杯可以过&#xff0c;虽然理论上会超时~ #include<iostream> using namespace std; const int maxn 2010; int a[maxn][maxn] {0};//0白棋&#xff0c;1黑棋 int main(){int n, m, x1, x2, y1, y2;scanf("%d%d", &n, &m)…

可视化大屏 附源码(Vue3 + TS + DataV + ECharts)

目录 前言 ✨项目代码 1、带有node_modules的项目包 &#x1f680; 2、不带有node_modules的项目包 &#x1f680; ⚒️项目屏幕大小调整 &#x1f48e; 使用开源项目 1、DataV &#x1f530; 2、Echarts &#x1f530; 3、PPchart &#x1f530; 4、表格平滑滚动 &a…