多模分频器,Multi-Modulus Divider
一直以来,对可编程分频器的理解始终停留在本科数电课上学到的“可清零计数器+比较器”的级别上,直到最近学习了多模分频器(multi-modulus divider,MMD),才发现之前的结构简直弱爆了,我对最早提出MMD结构的人佩服得真是五体投地。为了让更多的初学者了解MMD,我准备分3~4篇blog的篇幅介绍下MMD。
fin为MMD的时钟输入端,P[n:0]为控制字;如果仅从功能上来讲,f(n+1)以及mod0~mod(n)均可作为MMD的分频输出。
谷歌翻译朗读
MMD的基本组成单元只有一种,“可编程除2/除3分频器”(简称DIV23)。其基本功能描述为:
当modi=0时,fo为fi的二分频输出,modo恒为0;carry out
当modi=1时,
如果P=0,fo为fi的二分频输出,modo为fi的二分频输出;
如果P=1,fo为fi的三分频输出,modo为fi的三分频输出。
注意:对于modo的特性,简而言之,就是fo信号经modi选通(与逻辑)之后的输出信号。理解这一点非常重要!
tired的意思当n个DIV23按照下图的方式串联起来之后,根据P[n-1:0]的编码,可以实现从2^n~2^(n+1)-1步长为1的可编程分频比。为了理解这一过程,我们先来看一个简单的例子:只有两级DIV23的MMD,从左至右分别称之为第一级DIV23和第二级DIV23。
注意:假定DIV23的fo信号变化由fi的下降沿触发(具体原因以后会谈到)。
Ca1:P[1:0]=00
显然,f1为fin的2分频;而f2和mod1同为f1的2分频;而对于第一级DIV23来说,当mod1=0时,mod0=0,经过两个fin周期后,mod1变高,由于P=0,需要再经过1个fin周期,f1才会再度变高,此时满足f1与mod1同为高,则mod0输出宽度为1个fin周期的高电平,mod=1的时间总共为2个fin周期,与P=0对应。整体效果上mod0为fin的4分频输出。
Ca2:P[1:0]=01
简奥斯丁的遗憾与ca1相比,不同之处在于当mod=1时,第一级DIV23进入3分频模式,需要多经过1个fin周期f1才会变高。最终实现5分频的效果。用术语来讲,就是第一级DIV23“吞咽(swallow)”了一个fin周期。
Ca3:P[1:0]=10
f1为fin的2分频,第二级DIV23由于P=1且modi=1,在每个分频周期内swallow一个f1周期,即2个fin周期,最终实现6分频。
哈利波特英文版下载
Ca4:P[1:0]=11
胃蝇
confront在每个分频周期内,第二级DIV23将swallow一个f1周期,第一级DIV23将swallow一个fin周期,总计3个fin周期,最终实现7分频。
将上述结论一般化:
1,第n+1级DIV23吞咽一个脉冲的权重是第n级的2倍;因此,对于一个由n级DIV23组成的MMD,其最多可以吞咽1+2+…+2^(n-1)=2^n-1个fin周期。依靠的意思
2,另一方面,其最小的分频比为所有级均不吞咽脉冲时获得,此时所有DIV23均为2分频,最小分频比为2^n
根据上述两条,则该MMD的可编程分频比范围为2^n~2^(n+1)-1。
经典的DIV23的电路实现可以参考Cicero S.Vaucher,Igor Ferencic,Matthias Locher,
的“A Family of Low-Power Truly Modular Programmable Dividers in Standard0.35-_m CMOS Technology”。
本文会讨论如何设计一个DIV23电路:
1、首先我们需要两个不同的状态转移图来实现除2及除3,对于使用两个寄存器的设计,忽略自启动路径以及合并可以通过重命名状态名获得的转移图,可能的设计只有下图左侧和中间的两种,其中红色为/2路径,蓝色为/3路径,黑色为共同路径。
我曾经担心modi的变化会不会打断现有的/2、/3循环导致状态混乱,但是,从上面的转移图来看,决定/2、/3的分岔路口都只有B状态一个,因此,不妨假定所有的/2、/3周期都是从B状态开始,只有当完成一个/2、/3周期之后再回到B状态后才有可能开始下一次/2、/3分频。
注意:对于一个DIV23单元,只有1种设置(modi=1,P=1)对应/3模式;而有3种设置(modi=1,P=0,或者modi=0,P=0/1)都对应/2模式。如果三种/2模式的状态转移图不同,则需要仔细的考虑。对于上面的经典结构,其完整的状态转移图如上图最右侧所示,3种/2模式恰好对应同一个状态转移图,可是这是否是必须的呢?
2、之前提过,modo是fo经modi选通之后的输出信号,考虑这样一种情况:modo=fo& modi(简称fo高选通),fo在fi的上升沿改变(简称fo正触发),modo在fi的上升沿改变(简称modo正触发),则
(a)最终mod0的上升沿的产生,需要“1”信号从mod(n)开始逐级向前传播(此时各级的fo均为选通状态,即"1",因为fo和modo均为正触发),传播延时很大,附加抖动也随之变大;
(b)在mod(n)回0的过程中,需要f(n)的一个上升沿触发后级是mod(n+1)归0,但在f(n)变高但mod(n+1)尚未变低的过程中,mod(n)上会出现glitch。
3、与上一条的(b)情况类似,如果同时满足fo高选通以及modo正触发,采用fo负触发虽然可以保证时序正确,然而仍然无法避免在电路的某些内部节点产生glitch,不利于power 以及noi。
4、对于情况:fo高选通,fo负触发,modo负触发,虽然功能以及glitch上都没有问题,
但是,这种情况下,所有的mod(0)~mod(n)信号的下降沿是同时发生的,我认为这会导致加大的Ipeak。
综上所述,似乎只有(fo高选通,fo正触发,modo负触发),以及对偶情况(fo低选通,fo负触发,modo正触发)是比较好的选择,经典结构恰好是后一种。
5、modo信号的占空比不应该超过50%(事实上这是针对/3模式说的,/2模式下modo占空比必然为50%),原因很简单,因为modo与前级的modi相连,modi=1表示进入吞咽模式,而MMD的每个DIV23单元在一个分频周期内应该只进行一次吞咽操作。
6、fo信号的占空比可以任意值。
7、对于正向的f1~f(n+1)信号通路,时钟jitter会不断的累积,因此f(n+1)通常不会用作分频输出。解决的方法是,在每一级DIV23内使用fi采样modo信号,这样前几级的modo 信号就会获得较好的噪声特性,可以用作分频输出。cdfs是什么意思
drawable
扩展MMD的分频范围
标准的多模分频器,例如一个4级的结构,分频比范围为16~31;而一个3级的结构,分频比范围为8~15;……。既然实现小分频比的MMD需要的DIV23单元更少,很自然的,我们希望可以以较小的改
动,在实现最高分频比的MMD的基础上通过禁用部分的DIV23实现分频范围向下扩展,这似乎是一个一本万利的事情。
实现方式也很简单,通过观察上图,如果我们通过附加逻辑,强制将mod(n)信号钳制在‘1’,其效果就相当于只有mod(n)信号之前的n级DIV23构成了一个MMD,之后的DIV23则都被无视了。剩下的工作就是设计逻辑了,如下图。采用分频比扩展之后,MMD的分频范围可以达到2~2^(n+1)-1。