Facalon的博客

技术小白的自我修养

【FPGA】FPGA的输入、输出、扇出的那些琐事

emmm,之前四天没更新,今天先补一篇,补一篇之前在新浪博客写过的一篇博文,顺序可能和以前的不一样,根据理解重新编辑和补充,也算是重新学习一下。

--------------------------------------------------------------------------------------

在FPGA输入输出的时候,很多新手可能不理解为什么要加这些原语,这个IBUFGDS什么时候加,那个IBUFDS有什么不同?等等这些问题,可能刚开始的时候有人会告诉你先这样记住,一定要在这个时候加,这里就该加这个,哪里该加那个。不能只是知其然不知其所以然。今天我在看以前的博客的时候又多了一层新的理解,下面通过前几天发的FPGA内部结构、FPGA的时钟这些一起通过原理来理解为什么要加IBUFGDS,什么时候加这些原语。

     FPGA全局时钟资源一般使用全铜层工艺实现,并设计了专用时钟缓冲与驱动结构,从而使全局时钟到达芯片内部的所有可配置单元(CLB)、I/O单元(IOB)和选择性块RAM(Block Select RAM)的时延和抖动都为最小。然后将那些原语分为两类:1,缓冲。2,驱动。

    缓冲:就是输入缓冲或者输出缓冲,这些缓冲主要用来片外输入时钟或者片外差分输入的信号处理,因为FPGA有对时钟的专门资源,同时也要保证时钟的精准,有效解决颤抖、延迟等问题,另外就是差分信号(包括差分时钟)进入片内之后不经过IBUFGDS、IBUFDS缓冲无法直接处理。另外对于时钟来说,时钟引脚的输入只能接IBUGDS缓冲器,IBUFG和IBUFGDS的输入端仅仅与芯片的专用全局时钟输入管脚有物理连接,与普通IO和其它内部CLB等没有物理连接。如果不用原语链接这两部分时钟信号无法到达芯片内部的CLB等资源,也就是无法使用。(补充:IBUGDS和时钟输入引脚为对应的,也就是IBUGDS的输入必须为时钟引脚,时钟引脚必须链接IBUFGDS。这段中IBUFGDS   也可以换成IBUFG)   对了还有一个OBUFDS就是差分输出缓冲。

    驱动:驱动在时钟约束部分说过,当信号扇出过大是可以通过加BUFG来增加扇出,这里的BUFG就是全局缓冲,以BUFG为例,该原语的输入信号可以是IBUFGDS的输出也可以是逻辑信号的输出(内部信号),但是过一次BUFG有大约10ns的延时,但是通过BUFG之后输出到片内所有单元的延时可以忽略不计,另外一个典型的TTL逻辑门最多有10个扇出信号,而缓冲器可以驱动20到30个扇出信号,在这里可以理解为反相器,反相器一般情况下扇出较大。

    一般情况下IBUFGDS+BUFG或者IBUFG+BUFG可配套使用,当全局时钟扇出较少的时候可以不加BUFG。

---------------------------------------驱动--------------------------------------------------------

    另外缓冲分为全局时钟缓冲和局部时钟缓冲,局部始终缓冲BUFH、BUFR,对于BUFH在Xilinx FPGA 学习笔记——时钟资源这篇文章中有写,可移步查看。(虽然我没用过局部始终缓冲)另外在例化PLL或者MMCM这种时钟IP核时,要对输入输出时钟的类型进行选择,大家可以看到有BUFG和BUFH的下拉选项。

---------------------------------------缓冲------------------------------------------------------------

    IBUFDS、IBUFGDS和OBUFDS都是差分信号缓冲器,用于不同电平接口之间的缓冲和转换。IBUFDS 是差分输入的时候用,OBUFDS是差分输出的时候用,而IBUFGDS则是时钟信号专用的输入缓冲器。

    IBUFDS是一个输入缓冲器,支持低压差分信号(如LVCMOS、LVDS等)。在IBUFDS中,一个电平接口用两个独特的电平接口(I和IB)表示。一个可以认为是主信号,另一个可以认为是从信号。主信号和从信号是同一个逻辑信号,但是相位相反。

IBUFDS instance_name (.O (user_O),
.I (user_I),
.IB (user_IB));

OBUFDS是一个输出缓冲器,支持低压差分信号。与IBUFDS对应

OBUFDS instance_name (.O (user_O),
.OB (user_OB),
.I (user_I));

IBUFGDS是一个连接时钟信号BUFG或DCM的专用的差分信号输入缓冲器。在IBUFGDS中,一个电平接口用两个独立的电平接口(I和IB)表示。一个可以认为是主信号,另一个可以认为是从信号。主信号和从信号是同一个逻辑信号,但是相位相反。

IBUFGDS instance_name (.O (user_O),
.I (user_I),
.IB (user_IB));

---------------------------------------------------------------------------------------------------

    比较基础,但是最基础的东西才是最真实的东西。加油!

阅读更多
上一篇【FPGA】賽灵思的功耗预算
下一篇【FPGA】高速信号处理中的片外信号输入输出静态时序分析
想对作者说点什么? 我来说一句

黑金 FPGA那些事儿 (系列)

2018年03月17日 8.31MB 下载

书籍:FPGA那些事儿--光盘

2018年05月08日 74.45MB 下载

FPGA实现PWM输出

2009年03月18日 494KB 下载

FPGA扇出问题

2013年06月02日 16KB 下载

基于FPGA的矩阵键盘

2018年05月05日 10KB 下载

FPGA 8位串口输入转16位SPI输出

2012年06月07日 292KB 下载

FPGA产生MIPI信号

2014年04月09日 2.76MB 下载

FPGA实现信号延时的方法

2009年03月31日 15KB 下载

基于FPGA的音频输出

2017年03月20日 217KB 下载

没有更多推荐了,返回首页

关闭
关闭