Xilinx 7系列原语使用(时钟相关)——(一)
一、部分常用时钟原语介绍
1、
IBUFDS、OBUFDS:差分信号缓冲器,用于不同电平接口之间缓冲和转换。用于普通bank的差分时钟转单端。
1)、IBUFDS为差分输入缓冲器,支持低压差分信号LVCMOS、LVDS等:
端口 | IO | 位宽 | 功能 |
I | input | 1 | 差分输入+ |
IB | input | 1 | 差分输入- |
O | output | 1 | 输出 |
input | output | |
I | IB | O |
0 | 0 | 不改变,和上次输出相同 |
0 | 1 | 0 |
1 | 0 | 1 |
1 | 1 | 不改变,和上次输出相同 |
// IBUFDS : In order to incorporate this function into the design,
// Verilog : the following instance declaration needs to be placed
// instance : in the body of the design code. The instance name
// declaration : (IBUFDS_inst) and/or the port declarations within the
// code : parenthesis may be changed to properly reference and
// : connect this function to the design. All inputs
// : and outputs must be connected.// <-----Cut code below this line---->// IBUFDS: Differential Input Buffer// Virtex-7// Xilinx HDL Language Template, version 2018.2IBUFDS #(.DIFF_TERM("FALSE"), // Differential Termination.IBUF_LOW_PWR("TRUE"), // Low power="TRUE", Highest performance="FALSE" .IOSTANDARD("DEFAULT") // Specify the input I/O standard) IBUFDS_inst (.O(O), // Buffer output.I(I), // Diff_p buffer input (connect directly to top-level port).IB(IB) // Diff_n buffer input (connect directly to top-level port));// End of IBUFDS_inst instantiation
2)、 OBUFDS为查分数出缓冲器,用于将内部逻辑信号转换成差分信号输出,支持TMDS、LVDS等电平。
端口 | IO | 位宽 | 功能 |
O | output | 1 | 差分输出+ |
OB | output | 1 | 差分输出- |
I | input | 1 | 输入 |
input | output | |
I | O | OB |
0 | 0 | 1 |
1 | 1 | 0 |
// OBUFDS : In order to incorporate this function into the design,
// Verilog : the following instance declaration needs to be placed
// instance : in the body of the design code. The instance name
// declaration : (OBUFDS_inst) and/or the port declarations within the
// code : parenthesis may be changed to properly reference and
// : connect this function to the design. Delete or comment
// : out inputs/outs that are not necessary.// <-----Cut code below this line---->// OBUFDS: Differential Output Buffer// Artix-7// Xilinx HDL Language Template, version 2018.2OBUFDS #(.IOSTANDARD("DEFAULT"), // Specify the output I/O standard.SLEW("SLOW") // Specify the output slew rate) OBUFDS_inst (.O(O), // Diff_p output (connect directly to top-level port).OB(OB), // Diff_n output (connect directly to top-level port).I(I) // Buffer input);// End of OBUFDS_inst instantiation
2、
IBUFDS_GTEx,x=2/3/4,差分缓冲器,用于高速BANK(GTY BANK)的两路参考时钟输入。
其中UltraScale使用IBUFDS_GTE3作为GTY bank的差分缓冲器,UltraScale+采用IBUFDS_GTE4。对于高速BANK,需要使用IBUFDS_GTEx(不同系列的FPGA x的值不同,如x=2/3/4),如果仍然使用IBUFDS,可能会在编译或者生成bit文件时报错,提示时钟约束有问题,约束后可以生成bit文件,但是转出的单端时钟不能使用(正常情况下差分时钟的电平是不需要约束的)。
UltraScale架构中的GTY收发器是高速收发器,在UltraScale FPGA中支持500Mb/s到30.5Gb/s,在UltraScale+ FPGA中支持32.75Gb/s。每个GTY BANK包括四路收发通道,即一个QUAD,每个收发通道具有独立的通道锁相环CPLL,为收发数据提供参考时钟,每个QUAD还有两个共用的QPLL时钟资源可提供到四个收发通道。
使用原语驱动GTX/GTH/GHY参考时钟,每个Quad有两个IBUFDS_GTEx元件,驱动GTREFCLK0和GTREFCLK1,常用模式是实例化一个IBUFDS_GTEx并驱动两个参考时钟之一。
// IBUFDS_GTE4 : In order to incorporate this function into the design,
// Verilog : the following instance declaration needs to be placed
// instance : in the body of the design code. The instance name
// declaration : (IBUFDS_GTE4_inst) and/or the port declarations within the
// code : parenthesis may be changed to properly reference and
// : connect this function to the design. All inputs
// : and outputs must be connected.// <-----Cut code below this line---->// IBUFDS_GTE4: Gigabit Transceiver Buffer// Kintex UltraScale+// Xilinx HDL Language Template, version 2018.2IBUFDS_GTE4 #(.REFCLK_EN_TX_PATH(1'b0), // Refer to Transceiver User Guide.REFCLK_HROW_CK_SEL(2'b00), // Refer to Transceiver User Guide.REFCLK_ICNTL_RX(2'b00) // Refer to Transceiver User Guide)IBUFDS_GTE4_inst (.O(O), // 1-bit output: Refer to Transceiver User Guide.ODIV2(ODIV2), // 1-bit output: Refer to Transceiver User Guide.CEB(CEB), // 1-bit input: Refer to Transceiver User Guide.I(I), // 1-bit input: Refer to Transceiver User Guide.IB(IB) // 1-bit input: Refer to Transceiver User Guide);// End of IBUFDS_GTE4_inst instantiation
/// IBUFG/BUFG/......中'G'为Global Clock/General Clock?
3、
IBUFG即输入全局缓冲, 是与专用全局时钟输入管脚相连接的首级全局缓冲。所有从全局时钟管脚输入的信号必须经过IBUF单元,否则布局布线时会报错。IBUFG支持AGP、CTT、GTL、GTLP、HSTL、LVCMOS、LVDCI等多种格式的IO标准。
4、
BUFG是全局缓冲,它的输入是IBUFG的输出,BUFG的输出到达FPGA内部的IOB、CLB、RAM的时钟延迟和抖动最小。
5、
BUFGP相当于IBUFG + BUFG。
6、
BUFGCE是带有使能端的全局缓冲。有一个输入I、一个使能端CE、一个输出O,只有当BUFGCE使能端有效时,BUFGCE才有输出。
7、
BUFGMUX全局时钟选择缓冲,有I0和I1两个输入,一个控制端S,一个输出端口O。当S为低电平时输出时钟为I0,否则为I1。BUFGMUX使用灵活,I0和I1两个输入时钟可以是异步关系。
8、
BUFGDLL全局缓冲延迟锁相环,相当于BUFG+DLL的结合,在早期设计中经常使用,用以完成全局时钟同步和驱动等功能,随着数字时钟管理单元(DCM)的日益完善,目前BUFGDLL的应用已经逐渐被DCM替代。
9、
IBUFGDS/OBUFGDS(专用差分输入时钟缓冲器)是IBUFG/OBUFG的差分形式,当信号从一对差分全局时钟管脚输入时,必须使用IBUFGDS作为全局时钟输入缓冲。IBUFGDS实质上是一个连接时钟信号BUFG或DCM的专用的差分信号输入缓冲器,在IBUFGDS中一个电平接口用两个独立的电平接口(I和IB)表示,一个认为是主信号一个是从信号,相位相反。(7系列中没有找到?)
10、
DCM数字时钟管理单元,主要完成时钟同步、移相、分频、倍频、去抖等。DCM与全局时钟有着密不可分的联系,为达到最小延迟和抖动,几乎所有的DCM应用都要使用全局缓冲资源。DCM可以用xilinx ISE中的Architecture Wizard直接生成。
二、全局时钟资源使用方法
1、 IBUFG + BUFG
IBUFG后面连接BUFG,这种组合相当于BUFGP。
2、IBUFGDS + BUFG
当输入时钟信号为差分信号时,使用IBUFGDS代替IBUFG,即IBUFGDS + BUFG。
3、IBUFG + DCM + BUFG
这种灵活的方法对全局时钟的控制更加有效,通过DCM模块不仅能对时钟进行同步、移相、分频、倍频等,而且可以使全局时钟输出达到无抖动延迟。
参考:XILINX Ultrascale/Ultrascale+ 高速收发器时钟MGTHREFCLK原语调用_青豆哒哒的博客-CSDN博客
IBUFDS、IBUFGDS和OBUFDS_hi请叫我学霸的博客-CSDN博客_ibufds
BUFG、差分转单端之IBUFDS和IBUFDS_GTE2区别_朝阳群众&热心市民的博客-CSDN博客_ibufds_gte2
https://www.csdn.net/tags/OtDaIgzsNDYwMDMtYmxvZwO0O0OO0O0O.html
xilinx提供了丰富的原语,可以将之看成FPGA开发可以使用的库函数,原语在FPGA中具有与之对应的硬件逻辑单元,但也注意,不同的FPGA的原语可能会有所不同,但常用的原语不同器件相似度极高。按照功能,主要分为:计算组件、I/O端口组件、寄存器和锁存器、时钟组件、处理器组件、移位寄存器、配置和检测组件、RAM/ROM组件、Slice/CLB组件以及G比特组件。
选择时钟组件,对时钟组件的原语进行介绍,时钟组件包括各种全局时钟缓冲器、全局时钟复用器以及高级数字时钟管理模块,主要介绍前两个。
参考:
xilinx时钟组件的原语
//-----------------------------------下一篇博客参考文章----------------------------------------
Xilinx FPGA器件中时钟资源的说明以及使用 - 简书
FPGA时钟资源介绍-元件功能 - 天山明月 - 博客园
xilinx FPGA全局时钟资源的使用 - 朝雨轻尘 - 博客园
Xilinx 7系列原语使用(时钟相关)——(一)相关推荐
- 【Vivado那些事】Xilinx 7系列时钟结构详解
Xilinx 7系列时钟结构 xilinx 的 FPGA 时钟结构,7 系列 FPGA 的时钟结构和前面几个系列的时钟结构有了很大的区别,7系列的时钟结构如下图所示. Clock Region:FPG ...
- 痞子衡嵌入式:浅谈i.MXRT1xxx系列MCU时钟相关功能引脚的作用
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1xxx系列MCU时钟相关功能引脚作用. 如果我们从一颗 MCU 芯片的引脚分类来看芯片功能,大概可以分为三大类:电源.时钟 ...
- 7,xilinx 7系列FPGA理论篇——CMT时钟模块简介
上篇咱们仅仅简要的介绍了时钟的用法,并未详细的说明,主要是因为很多时钟用法是针对特定的应用需求,无法一一介绍.本篇咱们将重提上篇的CMT时钟模块,聊一聊它的用法.可以这么说,每个靠谱的FPGA设计里都 ...
- 6,xilinx 7系列FPGA理论篇——时钟操作法则
上一篇咱们介绍了7系列FPGA的时钟区域的内部结构,本篇咱们接着介绍如何实际操作时钟.不说其它的,直接先上两张图,大家如果能看懂这两张图,那么就不用浪费时间往下看了..... 1,MRCC:被外部差分 ...
- Xilinx 7系列FPGA 高速收发器GTX/GTH的一些基本概念
本来写了一篇关于高速收发器的初步调试方案的介绍,给出一些遇到问题时初步的调试建议.但是发现其中涉及到很多概念.逐一解释会导致文章过于冗长.所以单独写一篇基本概念的介绍,基于Xilinx 7系列的GTX ...
- axi dma 寄存器配置_FPGA Xilinx Zynq 系列(三十二)AXI 接口
大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江湖,在"闯荡江湖"."行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢. ...
- FPGA block RAM和distributed RAM区别(以及xilinx 7系列CLB资源)
原地地址:FPGA block RAM和distributed RAM区别 区别之1 block ram 的输出需要时钟,distributed ram在给出地址后既可输出数据. 区别之2 distr ...
- Xilinx FPGA用户原语介绍
原语,即primitive.不同的厂商,原语不同:同一家的FPGA,不同型号的芯片,可以也不一样:原语类似最底层的描述方法.使用原语的好处,可以直接例化使用,不用定制IP:即可通过复制原语的语句,然后 ...
- Xilinx 7系列FPGA收发器架构之硬件设计指导(一)
引言:本文我们介绍Xilinx 7系列FPGA收发器硬件设计主要注意的一些问题,指导硬件设计人员进行原理图及PCB设计.本文介绍以下内容: GTX/GTH收发器管脚概述 GTX/GTH收发器时钟设计 ...
最新文章
- 旅游网站的主页代码_一个在优化的网站主页内容应该如何设计?
- 根据卡号获取银行卡名字
- ADO.NET Entity Framework之ObjectQuery
- Firefox必备的24款web开发插件[转]
- Xilinx FPGA单端时钟设计方法
- 华为100万部鸿蒙,2019年Q4发布 华为100万部鸿蒙OS手机已开测
- easyui 年份下拉框的构建
- 在windows下安装Linux双系统共存不需要改引导(U盘安装版本)
- JDK1.8下载 百度网盘
- 直面不确定性 看致远互联如何帮助组织自生长
- 根据汉字自动生成拼音
- 争议带货达人董明珠:直播带货476亿 却被质疑经销商刷单
- R语言中的函数5:purrr:map()
- RT-Thread实战笔记|LD3320非限定词条语音控制器使用详解
- ZK-SNARKS | 创建第一个零知识snark电路
- 成长与危险相伴是常态,加强安全审计才是硬道理
- Eclipse中Tomcat“子容器启动失败”
- 京东计算机新书销量榜 TOP 1
- android基础题型
- Unity 关于MatchVS使用static类型导致GameObject.Find与Action等不可用的解决方法
热门文章
- matlab仿真直流电机,[转载]基于Matlab/Simulink的无刷直流电机控制仿真研究
- 电子设计教程12:Buck降压电路
- win11cf烟雾头怎么调?
- 杰里之升级复位可以选择软复位跳转和绝对地址跳转【篇】
- 同样协调个事情,为什么有人一说就通,有人一说就炸?(转,知乎)
- 骑行中央公园,探索纽约“后花园”别样的美
- 【Unity】Unity 欧拉角、四元数、万向节死锁、四元数转轴角
- 是你吗?为超炫的 USB 硬件编写更好的软件
- 全球及中国M2M组件行业需求规模与投资效益预测报告2022~2027年
- 用史上最牛学习法自学编程,不香吗?