Xilinx FPGA 学习笔记——原语 BUFIO 的理解

我一直没搞明白BUFIO是干嘛用的。

官方解释有这么一段话,如下:(virtex的)

“BUFIO是用来驱动I/O列内的专用时钟网络,这个专用的时钟网络独立于全局时钟资源,适合采集源同步数据。BUFIO只能由位于同一时钟区域的Clock-Capable I/O驱动。一个时钟区域有4个BURIO,其中的2个可以驱动相邻区域的I/O时钟网络。BUFIO不能驱动逻辑资源(CLB、BRAM等),因为I/O时钟网络只存在于I/O列中。”

就是如果BUFIO只能驱动IO,到达不了CLB和RAM,可是数据最终是要进逻辑的啊,为什么呢?

首先、需要明确BUFIO是输入用的。BUFIO是用来驱动输入时钟的,将外部时钟引入FPGA的!与IOBUF不同啊,但与IBUFG类似,时钟信号进FPGA也可以经过IBUFG。

其次、再来看BUFIO的输入和输出:SPARTAN6 的UG382手册里这么写的,如下:

BUFIO2 can drive ISERDES2 and OSERDES2 for either SDR or DDR clocking. BUFIO2 can 
also route clock inputs from either a GCLK or a GTP_DUAL tile to a BUFG, DCM, or PLL 
clock input. BUFIO2_2CLK can be used to replace one of the BUFIO2s required for DDR 
clocking of the ISERDES2 and OSERDES2

(SDR: 单边沿,DDR:双边沿)

就是说BUFIO2输入可以是GCLK(全局时钟)和GTP_DUAL。然后输出到BUFG或者,DCM ,PLL的时钟输入。

也就是说数据流顺序 PAD-->BUFIO-->BUFG或者PAD-->BUFIO-->DCM(PLL)--->BUFG不知道有这样用的吗。

但实际应用可以这样,BUFIO配和ISERDES2使用,ISERDES2是将串行数据转成并行数据,相当于分频了。而BUFIO具有分频的功能。

举例串行数据转成4bit并行数据:串行数据相当4分频,同样将随路时钟clk_in(就是和串行数据同步进来的时钟,,作为串行数据的采集时钟)同步BUFIO接进FPGA,

BUFIO可以将输入的随路时钟clk_in进行4分频为clk_in4。这样把clk_in4给BUFG,然后就可以同步将4bit的数据输入采集到逻辑FIFO中去了。

配个图,看看BUFIO的输入输出可以接什么:

输出链接示意图,如下:可以看到PN-->BUFIO-->BUFG(DCM)或者PN-->BUFIO-->IO,驱动IO(PN只差分对的P和N)


结合一下BUFIO的原语结构:


可以看出:

  • IOCLK就去驱动IO了或者IOSERDES2的CLK0,1;IODDR2等
  • DIVCLK可以去接BUFG或者PLL。
  • SERDESSTROB可以去驱动IOSERDES2的IOCE使能脚了。


以上是对SP6讲的,在virtex里面,有文章开头那句话:BUFIO是用来驱动I/O列内的专用时钟网络,这个专用的时钟网络独立于全局时钟资源,适合采集源同步数据。BUFIO只能由位于同一时钟区域的Clock-Capable I/O驱动。一个时钟区域有4个BURIO,其中的2个可以驱动相邻区域的I/O时钟网络。BUFIO不能驱动逻辑资源(CLB、BRAM等),因为I/O时钟网络只存在于I/O列中。”

就是说virtex里面BUFIO好像只能由Clock-Capable I/O驱动了。

在看virtex5的资料时,它有Clock Capable I/O引脚,这个引脚不是全局时钟输入引脚,bufio时钟源来自于Clock Capable I/O引脚,在源同步是非常有用,此时时钟可看做一个普通的数据引脚,所有的数据线和时钟线在fpga内部,从外部pad到触发器的D端,可以有相同延迟的布线。(http://bbs.21ic.com/icview-242710-1-1.html)

最后感谢9哥群里的 
Joseph.H和其他群友的友情讲解!

  • 16
    点赞
  • 133
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Xilinx FPGA原语是指Xilinx公司针对其器件特征开发的一系列常用模块,用户可以将其看成Xilinx为用户提供的库函数,类似于C中的关键字。原语代表FPGA中实际拥有的硬件逻辑单元,如LUT,D触发器,RAM等。在实现过程中,需要将设计单元转译为目标器件中的基本元件,否则无法实现。原语可以直接例化使用,是最直接的代码输入方式。Xilinx公司提供的原语按功能分为计算组件、I/O端口组件、寄存器和锁存器、时钟组件、处理器组件、移位寄存器、配置和检测组件、RAM/ROM组件、Slice/CLB组件以及G比特收发器组件。 其中,计算组件包括DSP48核,也被称为硬件乘法器。它是Xilinx FPGA原语的一种,功能为进行计算。 另外,FPGA设计中的时钟信号如果不是由FPGA芯片的专用时钟pin引入,通常需要在FPGA内部连接到时钟树资源上。这样做是为了避免时序问题影响逻辑行为。 还有一种原语BUFMUX,它是全局时钟复用器,用于选择两个输入时钟中的一个作为全局时钟。BUFMUX的功能可以通过选择信号来实现。它在综合结果分析中和同类原语BUFMUX1有相似的RTL级结构。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Xilinx公司原语的使用方法](https://blog.csdn.net/phenixyf/article/details/42874011)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Xilinx原语的使用](https://blog.csdn.net/qq_45776815/article/details/129262416)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值