上篇博文:时钟简介,简单的介绍了下时钟,这篇博文讲下时钟域的相关问题。
时钟域的概念
随着FPGA芯片所承载的功能日趋复杂,单个时钟信号已经往往不能满足FPGA设计的需求。就拿一个最简单地串并转换接口来说,要实现它就至少需要两个时钟信号,因此,通常情况下,一个FPGA设计中往往要用到多个时钟信号。
当FPGA设计中的时钟增多了以后,多时钟并存,就会导致跨时钟域问题。这篇博文暂时不讲跨时钟域问题,而要要将目光聚集到时钟域上,只要搞清楚什么是时钟域,后续的讨论才有意义。
简而言之,时钟域就是时钟信号的“势力范围”。一个时钟域只能存在一个时钟信号,但是一个时钟信号最多可以对应两个时钟域,当其上升沿和下降沿分别都被一部分资源敏感的时候。
而被各个时钟域所瓜分的资源,正是具有存储功能的各个单元,而其中最典型的就是寄存器。要想判断一个寄存器时属于哪一个时钟域的,方法很简单,只要看它的时钟输入端口接的是哪个时钟信号以及敏感那个边沿即可。
时钟树简介
既然是“势力范围”,那么不同时钟信号的时钟域大小就可能不同。因此,对于“势力范围”大小不同的各个时钟域,时钟的管理方法也必然不同,也就是使用时钟树!(时钟树其实就是FPGA内部的时钟网络资源)
那么时钟树是如何管理时钟域的呢?
首先,如果一个时钟域包含10000个触发器,那么该时钟信号必须能够同时连接到这10000个触发器的时钟输入端,而如此之大的信号扇出要怎么实现呢?
时钟树可以做