时钟设计技巧

来源:互联网 发布:在哪找淘宝客卖家 编辑:程序博客网 时间:2024/05/16 18:32

转自:深入浅出玩转FPGA

1、内部逻辑产生的时钟

       若使用组合逻辑的输出作为时钟信号或者异步复位信号,必须对有可能出现的问题采取必要的预防措施。在正常的同步设计中,一个时钟一个节拍的数据流控制能够保证系统持续稳定的工作。但是,组合逻辑产生的时钟不可避免地会有毛刺出现,如果此时输入端口的数据正处于变化过程,那么它将违反建立和保持时间要求,从而影响后续电路的输出状态,甚至导致整个系统运行失败。

对于必须采用内部逻辑做时钟或者复位信号的应用,也还是有解决办法的。在输出时钟或者复位信号之前,再用系统专用时钟信号(通常指外部晶振输入时钟或者PLL处理后的时钟信号)打一拍,从而避免组合逻辑直接输出,达到同步处理的效果。对于输出的时钟信号或复位信号,最好让它走全局时钟网络,从而减小时钟网络延时,提升系统时序性能。

2、分频时钟与使能时钟

            设计中往往需要用到主时钟的若干分频信号作为时钟,即分频时钟。对于资源较丰富的FPGA,一般都有内嵌的多个PLL或者DLL专门用于时钟管理,利用它们就可以很容易地达到多个时钟的设计,输出时钟能够配置成设计者期望的不同频率和相位差(相对于输入时钟),这样的时钟分频是最稳定的。但是对于某些无法使用PLL或者DLL资源的器件又该怎么办呢?推荐使用“使能时钟”进行设计,在“使能时钟”设计中只使用原有的时钟,让分频信号作为使能信号来用。

例子:设计需要得到一个50MHz输入时钟的5分频信号即10MHz。


如图2.36所示,使能信号不直接作为时钟使用,而是作为数据输入端的选择信号,这样就避免了使用分频时钟。


3、门控时钟

组合逻辑中多用门控时钟,一般驱动门控时钟的逻辑都是只包含一个与门(或门),如果有其他的附加逻辑,很容易因竞争产生不希望的毛刺。图2.37,门控时钟通过一个使能信号控制时钟的开或者关。当系统不工作时可以关闭时钟,整个系统就处于非激活状态,这样能够在某种程度上降低系统功耗。

然而,使用门控时钟并不符合同步设计的思想,它可能会影响系统设计的实现和验证。单纯从功能实现来看,使用使能时钟替代门控时钟是一个不错的选择;但是使能时钟在使能信号关闭时,时钟信号仍然在工作,它无法像门时钟那样降低系统功耗。


图2.38所示,对于上升沿有效的系统时钟clk,它的下降沿先把门控信号(gating signal)打一拍,然后再用这个使能信号(enable)和系统时钟(clk)相与后作为后续电路的门控时钟。


这样的门控时钟电路很好地解决了组合逻辑常见的一些问题。它避免了毛刺的出现,同时也有效抑制了亚稳态可能带来的危害,但是从另一个方面来说,如果这个设计的系统时钟(clk)占空比不是很稳定,或者输出的使能信号(enable)与时钟信号(clk)的逻辑过于复杂(不止这个例子中一个与门那么简单),那么它也会带来一些功能或时序上的问题。总的来说,只要设计者控制好这个设计中时钟的占空比和门控逻辑复杂度,它还是比图2.37给出的门控时钟方案更可行。



0 0
原创粉丝点击