老子按:话说分频器在可编程器件中应用极为广泛。各种各样的分频让人眼花缭乱。常见的二分频啊、特定占空比的分频啊、等占空比的偶数分频啊。不过有一种分频比较怪异,那就是等占空比的奇数分频,或者说N.5分频。这种分频实现起来无非有两种思路,一是采用双时钟边沿,而是采用脉冲扣除电路。比较而言,前一种实现起来比较简单,原理易懂,不过由于需要时钟的两个边沿,因此受系统时钟的影响比较大,抗干扰能力较弱。后一种实现起来有点“投机取巧”的感觉,不过相对前一种而言更为稳定。

那么两种方法到底是怎么回事儿呢?

举个例子来说,我们现在要实现等占空比的7分频。

传统的等占空比分频器设计,常见的有两种思路:一是计数到一半翻转;而是计数到起始值、中间值置位。比如八分频,可以采用计到4翻转的方式。也可以采用计到0时置1、计到4时置0。不过这两种思路遇到等占空比计数分频时就都傻眼了,比如本例中的,要求七分频。不可能说计到3.5翻转,或者说3.5的时候置位。

不过问题既然提出来了,当然有变通解决的方法。

第一种,就是死马当活马医的方式,在计数器上想办法,愣是给整一个3.5的计数出来。即采用时钟的双边沿,用时钟的上升沿实现计数。用时钟的下边沿实现归零、翻转。比如本例中的,就可以做一个带清零的模4计数器,然后用时钟的上升沿计数,用时钟的下降沿判断计数值是否等于3,如果是,就将计数器清零。从而变通的实现了“计数到3.5”。

第二种,一种比较灵巧的方式,这种方式和上一种相反,是在输入时钟上相办法。具体来说,就是将计数器的计数值和输入时钟异或的结果作为计数器的时钟。这样就可以“产生出”一种0.5的时钟了。