目录
上篇博文:时钟域问题简介,介绍了时钟域的相关知识,形象的说就是时钟信号的“势力”范围,它通过时钟树的形式实现。
时钟树不仅可以做到高扇出,还可以做到让时钟信号到达各个触发器的时刻尽可能一致,也即保证时钟信号到达时钟域内不同触发器的时间差最小。
这篇博文进一步说时钟树的问题,我们知道了时钟树的这么强大的功能,好处这么多,那么怎么使用时钟树,我什么时候使用到了时钟树呢?
(1)什么情况下,时钟应该“上树”?
如果一个时钟信号是为FPGA内部的一些逻辑资源提供“脉搏”的,那么强烈建议该时钟“上树”;
如果时钟信号的时钟域实在太小,例如仅控制若干个触发器,那么也许不利用时钟树,FPGA设计也可能通过时序分析,但是仍然建议使用时钟树;
如果时钟信号的时钟域只包括一个触发器,那么也就不存在所谓的时间差了,此时就完全不需要时钟树;
如果一个时钟信号仅仅是为FPGA外部的硬件电路提供时钟激励的,那么外部无论有多少个存储单元需要使用该时钟,都没必要使用时钟树,因为FPGA内部的时钟树无法延伸到FPGA芯片外部。
(2)如何选择时钟树?
上篇博文提到了时钟树的类型,分为全局时钟树、局部时钟树和IO时钟树。那么具体来说,如果需要使用时钟树,该为时钟选择哪一类时钟树呢?
也许自觉会这么告诉自己,时钟域大的,选择全局时钟树;时钟域小的,选择区域时钟树;时钟域特别小,选择IO时钟树。
事实告诉你,自觉是完全错误的。
IO时钟树分布在FPGA的接口资源中,由于它们离IO管脚最近,