电子工程专辑
UBM China

FPGA??外时钟反馈分析

上网日期: 2002年12月14日 ?? 作者: 朱愈 ?? 我来评论 字号:放大 | 缩小 分享到:sina weibo tencent weibo tencent weibo


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友

关键字:FPGA? 时钟? 反馈分析? 相位偏移?

在进行FPGA设计时,经常需要向其它芯片提供时钟。本文提供了一种解决当使用FPGA和其它芯片进行连接并由FPGA向其它芯片提供时钟的时候,为了保证数据的传输正确性,如何使用时钟反馈的分析方法。图1:FPGA 和其它芯片(B芯片)的连接示意图。

在进行FPGA设计中,经常需要向其它芯片提供时钟,例如当FPGA与SRAM连接的时候。这时将涉及提供时钟反馈的问题,馈线的主要作用是使时钟在到达其它芯片时消除由于各种延迟所带来的时钟歪斜(skew)。在FPGA内消除这个延迟的方法是把从片外的反馈线引到FPGA内部的DLL或者是PLL的反馈引脚上,然后利用DLL和PLL锁相功能来去掉时钟歪斜。如图1所示。

但是,在设计时,如果没有必要使用时钟反馈线而使用了时钟反馈线,就会多占用一个引脚和FPGA的内部资源,这显然违背了最优化设计的原则。同时,由于在同等规模的情况下有DLL和PLL的FPGA要比没有DLL和PLL的FPGA的价格高,设计的实现成本增加,必须避免这种情况。问题的关键就在于确定在什么情况下需要使用时钟反馈线,而在什么情况下不需要。

根据下面分两种情况进行分析:


1. FPGA内部不使用DLL;


2. FPGA内部使用DLL并进行外部时钟反馈。

通过这两种情况的分析,可以得到一些频率极值点,从而确定使用时钟反馈的情况。

在分析问题的过程中,注意以下几点:

1.为了把问题分析具体化以体现此分析的意义,分析的对象设定为Xilinx的FPGA,这样在后面的各种描述都会以Xilinx的FPGA所特有的资源为目标。如果涉及到其它厂商的可编程逻辑产品,需要根据其相应的数据手册查得相应的参数。此分析的目的只为提供一种分析方法和得到一些通用的结论。图2:在不使用DLL的情况下,FPGA的内部连线示意图。

2.PCB上每英寸延迟时间为0.18ns。由于在通常情况下FPGA和B芯片在PCB板上的距离都很近,所以数据线和时钟以及时钟反馈线在板上的延迟在此分析中忽略不计。

3.数据被送出和送入FPGA的时候,都需要在IOB的寄存器寄存。

4.一些时间参数和Xilinx的数据手册中的一些参数的意义一样,只是命名方式不同。为了明确起见,在参数说明的时候会表明它与Xilinx的对应参数。

5. 通常FPGA连接的芯片都为ASIC芯片,因此,在分析中,对于B芯片来说,假定为ASIC芯片,所以不考虑时钟进入B芯片的延迟,因为这样的延迟已经被反映到了B芯片的其它参数里。

FPGA内部不使用DLL图3:当FPGA发送数据给B的时候,时钟和数据在FPGA??外的时序。

在不使用DLL的情况下,必须保证B芯片的寄存器不能使用接收到的时钟对接收数据形成提前采样,即时钟的延迟绝对不能大于数据的延迟。另外,由于数据和时钟在输入到B芯片的时候都经过相同的引脚延迟时间,这样在B芯片内部的数据和时钟的相对相位关系和B芯片外部的一样。

在满足上面的条件并且结合图3,可以得到下面的不等式。但在实际中,尽管数据同步于全局时钟,但由于FPGA内部时钟网络到达各个寄存器的时间不一样,这样总会在数据变化的时候引起一些毛刺,所以在不等式右边还应该加上毛刺所占用的时间。

设M为时钟周期,

等式1


等式2


等式3


等式4

Tbsu为B的寄存器建立时间。


Tbhd为B的寄存器保持时间。


Tfg为从FPGA发出的数据的毛刺时间。


ΔT为数据延迟和时钟延迟之间的差值。


Tfco为FPGA的IOB中寄存器的时钟到输出时间,相当于在Xilinx手册中定义的Tiockp


Tfd为FPGA中时钟从BUFG到数据的IOB中寄存器的时钟端的连线延迟时间。


Tfclk为FPGA中时钟从BUFG到时钟输出IOB的O端的连线延迟时间。


Tfo为FPGA的IOB的O端到PAD的延迟时间,相当于在Xilinx手册中定义的Tioop

在上面的讨论中,只是得到了数据从FPGA到B芯片方向稳定传输数据的频率极限点,但是在实际中这还不够,因为B芯片很有可能也会同时向FPGA传输数据。图4:当B发送数据给FPGA的时候,时钟和数据在FPGA??外的时序示意图。

当B芯片在传送数据给FPGA的时候,B不会传输时钟给FPGA,因此FPGA采样B芯片送来的数据的时候会使用自己片内的时钟。

由这些分析,可以得到下面的不等式:

设L为时钟周期,


等式5


等式6


等式7


Tbco为B的寄存器的时钟到输出延迟。


Tfsu为FPGA的IOB的PAD到IQ端的延迟。相当于Xilinx数据手册中的


Tbg为从B发出的数据的毛刺时间。


Tfhd为FPGA的IOB中的输入寄存器的保持时间。

可以注意到在图4中,外部时钟对于内部时钟的延迟只考虑了Tfo,在图3中却考虑了Tfo+ Tfclk。这里需要一些解释:

在当数据从B芯片传给FPGA的时候,在FPGA中采样数据的时钟和Int_Clock并不是同相位的,因为有一个Tfd延迟。在实际的情况中,如果把Tfclk减小,那么Tfclk和Tfd的大小差不多(具体可见后面的例子)。因此,在图4中,只需要考虑Tfo就可以了。

最后得到结论,在不使用DLL的情况下,所需要的频率应该选择FM和FL中较小的一个。

不使用DLL的例子

为了具体化分析,使用Virtex300-6和Micro的4M ZBT SRAM-10的连接电路作为例子。同时假设当数据从SRAM输入FPGA的时候,在IOB中不使用延迟模块(这样所使用的Tfsu就只相当于Xilinx手册中的Tiopick/ Tioickp)。

在Virtex 300-6中,电路连接方式如图2所示。用Xilinx后端工具进行处理并使用Xilinx的静态时序分析工具进行静态时序分析,从而得到需要的关于FPGA的各种参数。图5:在使用DLL的情况下,FPGA的内部连线示意图。

首先计算FM。在电路第一次实现的时候,静态时序分析结果显示Ext_Clock比数据延迟更多(Ext_Clock延迟6.731 ns,数据延迟6.584ns)。在前面的分析中,时序电路所要正常运行的一个很重要的条件是数据的延迟不能比时钟的延迟小,因此这个分析结果显然不能满足要求。通过静态时序分析还发现,Ext_Clock在OBUF上的延迟时间(Tfo)和数据的输出延迟时间(Tfco)只差0.002ns,时钟延迟时间较大,因此主要原因是由于把时钟从全局时钟网络引出部分走线延迟时间(Tfclk)。而在电路实现的时候,已经通过在后端完全人工的方式把这段走线延迟缩短到了最小值,为0.609ns。因此,需要通过其它方法改变时钟延迟。

在这个例子中所使用的方法是改变时钟的输出OBUF的驱动能力,从慢变换(Slow Slew) 12mA改到快变换(Fast Slew) 12mA。其静态时序分析结果显示时钟的延迟显著减小,从而比数据提前了1.753 ns(Ext_Clock延迟4.831ns,数据延迟6.584ns)。

在Micro的数据手册中,可以查到SRAM的寄存器建立时间(Tbsu)和寄存器保持时间(Tbhd),分别为2.0ns和0.5ns。另外,由于使用的是18位宽的数据线,与这些数据相对应的寄存器被最大可能地放在相邻的IOB里以减小毛刺的宽度。这样所引起的毛刺宽度最大估计为1ns。

最后得到:

等式8


等式9

根据式(1)得到:

等式10

然后,计算FL。根据Xilinx和Micro的数据手册可以得到下面的参数值。

Tfsu为1.6ns,通过Xilinx手册得到。


Tfo为4.831ns,通过前面的实践得到。


Tbg为1ns,通过估计得到,估计原则为按最大估计。


Tbco为7.5ns,通过Micro手册得到。

最后得到:

等式11


等式12

根据式(2)可得:


等式13

所以,按照计算最后得到的不使用DLL的频率上限值大约为 62.77MHz。

使用DLL并进行外部时钟反馈

当电路连接方式如图5所示时,通过增加延迟来实现输出时钟(Ext_Clock)的相位和参考时钟(Global_Clock)的相位一致。在理想情况下,如果不考虑反馈线(Ext_FeedBack)的延迟,那么Ext_DLL可以很好的实现Ext_Clock和Global_Clock的同相位。但是,在实际情况中,反馈线的延迟显然是不能被忽略。因为即使忽略了在片外的反馈线的走线延迟,但是在输入引脚和片内的反馈线的延迟时间总值相对于高频率时钟的周期来说也是一个不可忽略的值。所以,当Ext_DLL锁住频率之后,从输出引脚上输出的时钟当到达图1中A点的时候,其时钟相位并不是和参考时钟一致,而是有一个提前量。

设N为时钟周期,


等式14


等式15


等式16


Tfb为时钟反馈线在FPGA内部的走线延迟时间。


Tfi为时钟反馈线在进入FPGA的时候在FPGA的输入引脚上的延迟时间。由于反馈线是经过IBUFG进入FPGA,所以,延迟时间也应该计算IBUFG的延迟时间,该延迟时间和一般的IBUF上的延迟时间不一样,相当于Xilinx手册中的Tgpio

上面只分析了FPGA把数据发给B的情况,下面分析B把数据发给FPGA的情况。


设P为时钟周期,


等式17


等式18


等式19

通过式(4)可以知道,如果时钟的外部反馈线在输入FPGA的时候不使用IBUFG而使用IBUF,而且由于使用IBUF会使得反馈线在FPGA内部走线延迟增加,同时如果考虑外部的反馈延迟,会使(4)的分母变小,这样可以得到更高的FP。但是,同时需要注意到对时钟的提前应该有范围限制,即对于反馈线的延迟时间有范围限制。

如果保证式(4)中的分母不为0和负数,可以得到延迟时间的一个范围。但是,这个范围显然不是最后的反馈线延迟时间范围。因为,如果只考虑(4)的话,分母无穷趋近于0,会使得频率升高到无限。这在现实中显然是不可能的。因此联合(3),可以看到,如果反馈线的延迟时间加长,FN会变小,而同时FP会变大。两个频率值会往一个极值点趋近,最后得到频率的最大值,即FN和FP相等的时候,在这时候得到反馈线延迟最大值。

在使用DLL的情况下,所需要的频率应该选择FN和FP中较小的一个。

使用DLL的例子

为了具体化分析,同样使用Virtex 300-6和Micro的4M ZBT SRAM -10的连接电路作为例子。同时,假设当数据从SRAM输入FPGA的时候,在IOB中不使用延迟模块(这样所使用的Tfsu就只相当于Xilinx手册中的Tiopick/ Tioickp)。

在Virtex 300 -6中,电路连接方式如图5所示。把这样的电路用Xilinx的后端工具进行处理。

首先计算FN。下面对两个参数进行说明,其余的参数和前面分析中使用的值一样:

Tfi为0.65ns,通过前面的实践得到;


Tfb为0.006ns,通过前面的实践得到。

根据式(3)得到:


等式20

然后计算FP,根据式(4)得到:


等式21

所以,按照计算最后得到的使用DLL的频率上限值大约为 95.748MHz。

本文小结:

通过上面例子分析可以得到,设计使用DLL的时候的运行频率要比不使用DLL的时候的运行频率高。同时也看到,当设计运行频率小于FL的时候,不使用DLL仍然可以正常运行。而当设计运行频率高于FP的时候,即使使用了DLL设计也不能正常运行。如果设计运行频率在FL和FP之间的时候,设计需要使用DLL才能正常运行。

因此,在设计开始,如果知道FPGA和相连接的芯片的一些必要参数,设计工程师就可以根据计算结果来判断是否选择使用DLL或者是PLL,进而确定在使用和不使用两种情况下所需要的时钟网络和设计的目标实现芯片,这对整个项目都将有很大的帮助。

作者:朱愈


北京大唐高鸿数据网络有限公司


Email:zhuyu@gaohong.com.cn






我来评论 - FPGA??外时钟反馈分析
评论:
*? 您还能输入[0]字
分享到: 新浪微博 qq空间
验证码:
????????????????
?

关注电子工程专辑微信
扫描以下二维码或添加微信号“eet-china”

访问电子工程专辑手机网站
随时把握电子产业动态,请扫描以下二维码

?

5G网络在提供1Gbps至10Gbps吞吐量方面具有很好的前途, 并且功耗要求比今天的网络和手机都要低,同时还能为关键应用提供严格的延时性能。本期封面故事将会与您分享5G的关键技术发展,以及在4G网络上有怎样的进步。

?
?
有问题请反馈
推荐到论坛,赢取4积分X