当发生门控时钟的组合逻辑超越一级时,证规划项目的牢靠性变得很困难。即便样机或仿真成果没有显示出静态险象,但实践上依然或许存在着风险。一般,咱们不该该用多级组合逻辑去钟控PLD规划中的触发器。图7给出一个含有险象的多级时钟的比如。时钟是由SEL引脚操控的多路选择器输出的。多路选择器的输入是时钟(CLK)和该时钟的2分频 (DIV2)。由图7 的守时波形图看出,在两个时钟均为逻辑1的情况下,当SEL线的状况改动时,存在静态险象。险象的程度取决于作业的条件。 多级逻辑的险象是能够去除的。
图7 有静态险象的多级时钟
图8给出图7电路的一种单级时钟的替代计划。图中SEL引脚和DIV2信号用于使能D触发器的使能输入端,而不是用于该触发器的时钟引脚。选用这个电路并不需求附加PLD的逻辑单元,作业却牢靠多了。 不同的体系需求选用不同的办法去除多级时钟,并没有固定的形式。
图8 无静态险象的多级时钟
行波时钟
另一种盛行的时钟电路是选用行波时钟,即一个触发器的输出用作另一个触发器的时钟输入。假如细心地规划,行波时钟能够象大局时钟相同地牢靠作业。但是,行波时钟使得与电路有关的守时核算变得很杂乱。行波时钟在行波链上各触发器的时钟之间发生较大的时刻偏移,而且会超出最坏情况下的树立时刻、坚持时刻和电路中时钟到输出的延时,使体系的实践速度下降。
用计数翻转型触发器构成异步计数器经常选用行波时钟,一个触发器的输出钟控下一个触发器的输入,参看图9同步计数器一般是替代异步计数器的更好计划,这是因为两者需求相同多的宏单元而同步计数器有较快的时钟到输出的时刻。图10给出具有大局时钟的同步计数器,它和图9功用相同,用了相同多的逻辑单元完成,却有较快的时钟到输出的时刻。简直一切PLD开发软件都供给多种多样的同步计数器。
图9 行波时钟
图10 行波时钟转换成大局时钟
多时钟体系
许多体系要求在同一个PLD内选用多时钟。最常见的比如是两个异步微处理器器之间的接口,或微处理器和异步通讯通道的接口。因为两个时钟信号之间要求必定的树立和坚持时刻,所以,上述运用引进了附加的守时约束条件。它们也会要求将某些异步信号同步化。
图11给出一个多时钟体系的实例。CLK_A用以钟控REG_A,CLK_B用于钟控REG_B,因为REG_A驱动着进入REG_B的组合逻辑,故CLK_A的上升沿相对于CLK_B的上升沿有树立时刻和坚持时刻的要求。因为REG_B不驱动馈到REG_A的逻辑,CLK_B的上升沿相对于 CLK_A没有树立时刻的要求。此外,因为时钟的下降沿不影响触发器的状况,所以CLK_A和CLK_B的下降沿之间没有时刻上的要求。如图4,2.II 所示,电路中有两个独立的时钟,但是,在它们之间的树立时刻和坚持时刻的要求是不能确保的。在这种情况下,必须将电路同步化。图12 给出REG_A的值(如安在运用前)同CLK_B同步化。新的触发器REG_C由GLK_B触控,确保REG_G的输出契合REG_B的树立时刻。但是,这个办法使输出延时了一个时钟周期。
图ll 多时钟体系 (守时波形示出CLK_A的上升沿相对于CLK_B的上升沿有树立时刻和坚持时刻的约束条件)
图12 具有同步寄存器输出的多时钟体系
在许多运用中只将异步信号同步化仍是不行的,当体系中有两个或两个以上非同源时钟的时分,数据的树立和坚持时刻很难得到确保,咱们将面对杂乱的时刻问题。最好的办法是将一切非同源时钟同步化。运用PLD内部的锁项环(PLL或DLL)是一个作用很好的办法,但不是一切PLD都带有PLL、DLL,而且带有PLL功用的芯片大多价格昂贵,所以除非有特殊要求,一般场合能够不运用带PLL的PLD。 这时咱们需求运用带使能端的D触发器,并引进一个高频时钟。
图13 不同源时钟
如图13所示,体系有两个不同源时钟,一个为3MHz,一个为5MHz,不同的触发器运用不同的时钟。为了体系安稳,咱们引进一个20MHz时钟,将3M和5M时钟同步化,如图15所示。 20M的高频时钟将作为体系时钟,输入到一切触发器的的时钟端。3M_EN 和5M_EN将操控一切触发器的使能端。即原来接3M时钟的触发器,接20M时钟,一起3M_EN 将操控该触发器使能 ,原接5M时钟的触发器,也接20M时钟,一起5M_EN 将操控该触发器使能。 这样咱们就能够将任何非同源时钟同步化。
图14 同步化恣意非同源时钟
别的,异步信号输入总是无法满意数据的树立坚持时刻,简单使体系进入亚稳态,所以也主张规划者把一切异步输入都先通过双触发器进行同步化。安稳牢靠的时钟是体系安稳牢靠的重要条件,咱们不能够将任何或许含有毛刺的输出作为时钟信号,而且尽或许只运用一个大局时钟,对多时钟体系要注意同步异步信号和非同源时钟。