我一直没搞明白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端,可以有相同延迟的布线。
审核编辑:汤梓红
-
FPGA
+关注
关注
1629文章
21729浏览量
603050 -
Xilinx
+关注
关注
71文章
2167浏览量
121326 -
时钟
+关注
关注
10文章
1733浏览量
131461 -
引脚
+关注
关注
16文章
1195浏览量
50422 -
串行数据
+关注
关注
0文章
52浏览量
16533
原文标题:Xilinx FPGA 学习笔记——原语 BUFIO 的理解
文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论