1 buffer是什么?
所谓buffer,一般是几级器件尺寸逐步增大的反相器或类似结构的电路,以使得电阻在获得所需的驱动能力时,在功耗延时积上也达到最优。前后级的最佳驱动比例在2.718左右。buffer实际就是两个串联的反相器,常用于时钟路径中,用于增加时钟驱动能力,使得时钟clock具有良好的上升沿和下降沿。时钟buffer本身是输入负载较小,输出驱动能力较强。因此前级电路驱动buffer容易,而buffer驱动后级电路也比较容易。
2 不插buffer会发生什么情况
不插buffer会导致驱动能力不够,通常是两种情况
第一种是输出电流不够,导致信号状态异常,这常常发生在后级电路对输入电流有要求的时候,另一种则是输出电流不够,导致信号上升下降沿太差,这常常发生在后级电路的输入电容较大的情况。
驱动能力强:摆幅大,上升快
驱动能力弱:摆幅下,上升慢
图1:不同驱动能力下的时钟翻转情况
3 驱动能力
所谓驱动能力,是指前级电路的输出信号可以使得后级电路有效响应,这个有效的包含两层意思:第一是前级输出信号能被后级电路识别,第二是在规定的时间内被后级电路识别。
4 应用场景-1:通过插buffer减少负载数量
如图所示,时钟驱动16个reg时,负载很大,时钟上升很慢,并且时钟摆幅小,此时插入4个buffer。加buffer之前你的时钟直接驱动寄存器或者很多个寄存器。加buffer以后你的时钟只驱动buffer,而你的buffer会去驱动寄存器。时钟buffer本身是输入负载较小,输出驱动能力较强的。而且通常会做成一个时钟buffer网络来驱动设计里面全部的寄存器,并保证整个时钟网络上的信号有很好的transition,以及平衡从时钟源到所有寄存器的insertion delay.寄存器的CK端接在时钟上面, 在时钟上加入buffer是在做时钟树的时候让时钟到每一个寄存器的CK端的SKEW尽可能的小,还有增加驱动的功能。(图中的16个寄存器为举例数字,实际IC设计中并不一致。
图 2 :时钟路径buffer插入
5 应用场景-2:减少连线负载
当数据连线很长时,连线负载电容很大,导致存在很大的延时。此时插入buffer将连线分割成几个连线,每个buffer驱动的负载较小,因此能够有效减少延时,虽然buffer本身也具有延时,但是插buffer减少的连线延时明显大于buffer自身延时就可以采用插buffer的方式。
6 插buffer减少延时的原理:
通过插buffer的方式减少了电路的负载电容,负载电容减少后,同样电压的情况下,对电容充电速度快(上升沿陡峭),同样电容小时存储的电容小,放电所需的时间短(下降沿陡峭)。一句话来说就是: 插buffer的方式减少了电路的负载电容,从而增大了电路驱动能力。
总之,数字电路中的buffer一般有两个作用:
1.提高驱动能力
buffer是一种宽高比很大的mos管,宽高比大意味着电流大,驱动能力高。
在扇出很大的wire中插入buffer可以提高带负载能力,常见于时钟树中。
2.确保信号时序正确
当一条wire很长时,延迟很大(delay正比于长度的平方,设长度为1,delay为1),这时在中间插入buffer,wire delay变为1/4+1/4=1/2,只要buffer delay小于1/2,则buffer的插入可以缩短wire delay。
当一条wire的延迟不大时,如果有hold violation(表现为数据到达过快,需要滞后到达),则插入buffer,利用buffer delay可以修正这个hold violation。
全部0条评论
快来发表一下你的评论吧 !