Zahead的个人空间 https://blog.eetop.cn/1777474 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

为什么PLL中的可编程分频器不直接使用counter

热度 10已有 192 次阅读| 2025-6-4 21:30 |个人分类:MMD|系统分类:芯片设计| pll, divider, MMD

如何实现任意分频?

在设计PLL的可编程分频器(MMD)的时候,级联式结构的MMD到底是怎么设计出来的,惊为天人!
我想知道前辈们是怎么想的。所以,下面开始我的推导。

从直觉出发:分频下意识会如何实现?用计数器

对于分频器,我们最先想到的方案就是用计数器。
2 分频:计数为 1 时输出高电平,为 0 时输出低电平;
3 分频:计数到 2 时输出高电平,回到 0 时输出低电平;
4 分频:以此类推……
这样做的问题是:不同的分频比,需要不同的判断逻辑,2分频需要判断什么时候计数为1,3分频需要判断什么时候计数为2。
这不仅增加了逻辑判断的复杂度,如果想做一个任意分频器会极其不友好。

如何简化判断逻辑?使用减法计数器

在设计一个MMD时,如果想要避开这个复杂的逻辑判断,如果我们不考虑占空比的问题,可以采用一个减法计数器
设置计数器初始值为分频数 N;
每个时钟递减;
当计数值为 1 时输出一个脉冲。
这样就可以通过触发器的置数去解决判断逻辑复杂的问题了。
这种方式逻辑简单,但占空比不固定。不过在多数 PLL 场景下,这一点是可以接受的。使用减法器可以解决

那么是同步 vs还是异步计数器?

考虑实现细节:
同步计数器逻辑一致、速度稳定,但功耗大、延迟随 bit 增加;
异步计数器功耗小,但高频率下会因为时钟延迟导致多 bit 时失效。
通常我们会选择异步计数器,实现简单,并且功耗低。
两种计数器都遇到同一个问题,随着bit数增加,计数器工作不了在较高的频率
于是我们提出一个问题:
计数器会受频率和bit数的影响,如何让计数器的工作频率提高,并且bit数增加呢?

如何提高计数器的工作频率?

提高计数器的工作频率有两个方向:①硬提高,换先进工艺;②遇到频率高的信号,先降频再用计数器分频。
这里不考虑换先进工艺的方法,考虑计数器前面先增加一个预分频器,降低计数器的工作频率,这样整体的工作频率就提高了。
但是:
预分频器如果是2分频,那么整体的分频只能是2的倍数。
预分频器如果是3分频,那么整体的分频只能是3的倍数。
可恶的是,实现不了任意分频
如果单独一个分频不行,那可不可以用两个分频组合呢?
这让我们陷入一个新的思考:
有没有什么组合方式可以通过两个简单分频器组合出任意整数分频?

问题转化为“数学问题”

我们现在关注的问题是:
能否用两个基本分频单元,组合出任意整数分频?
这其实是一个经典的数学问题:Frobenius 问题(零钱找零问题)。这还是我问AI得到的答案。
对于互质的 m 和 n,最大的无法被表示的数是 g(m, n) = m*n - m - n。
比如:
对于 2 和 3,g(2,3) = 6 - 2 - 3 = 1;
说明只要大于 1 的数,都能通过 2 和 3 相加构造出来!
也就是说:
2 = 2
3 = 3
4 = 2 + 2
5 = 2 + 3
6 = 3 + 3,或 2 + 2 + 2
...
所以,只要能实现 2 分频和 3 分频模块,就能通过组合方式实现任意 >1 的整数分频!

为什么选 2 和 3?而不是 2 和 4、2 和 5?

2 和 4 不互质,不能表示奇数;
2 和 5 的 g(2,5) = 10 - 2 - 5 = 3,不能表示小于 4 的分频;
并且2和3的组合比较有规律,如果是2和5,5=5,6=2*3,7=2+5,8=2*4,9=2*2+5,不像2和3组合,可以非常有规律,规律意味着电路简洁。
当然,目前论文也有4/5分频的,他们不能表示小于11的分频,并且实现会更复杂。
因此,2 和 3 是构建任意整数分频的最小组合,电路实现也较为简洁。

两个预分频,counter需要如何设计?

由于两个分频,2分频或者3分频,那么应该是有两个counter,一个计数2分频,一个计数3分频
并且2分频和3分频不能同时打开,因此,这两个counter应该是分开运行的。
由于两个counter需要连续计数,那么第一个counter计数完后,应该会有一个触发信号告诉第二个counter开始计数。
综上,PS counter分频器被发明出来。PS counter分频器为,假设预分频为n/n+1分频,第一个counter计数周期为P,称为P counter,第二个counter计数器周期为S,称为S counter。由于P counter只计数到S就会让S counter开始计数,那么实际的分频为(P-S)*N+S*(N+1)=P*N+S。
疑惑为什么PS counter的预分频是n/n+1分频。但实际应用中,其实通常用2/3或者4/5,很少见到3/4分频。但根据我们的理论,只要是互质就可以。
但在实际应用中,由于2/3分频设计更简单,通常使用2/3分频,切换只需要断开一个触发器即可。

既然counter能通过预分频降低counter比特,那PS counter中的counter能不能继续降低比特

知道PS counter是如何设计出来后,自然会想,既然counter能通过预分频降低counter 比特,那我是不是可以继续降低counter的比特。
但是,PS counter加了预分频之后,从一个counter变成了两个counter,我如果要继续通过预分频的方法降低counter的话,那再加一个,得变成四个,电路的复杂度呈指数增长。有没有什么预分频组合比较适合级联呢?或者说,可以消除一个counter。
我们发现,还是2/3级联比较好,如下看2/3实现任意>2的整数
2 = 2*1         3 = 3*1 4 = 2*2 5 = 2*1 +3*1 6 = 2*3
7 = 2*2+3*1
2/3预分频中,3分频的counter可以是一个计数为1的counter,这完全可以用一个一周期的电平替代,这样,就减少了PS counter的S counter了。那么继续通过预分频器降低counter比特数就可以实现了。
这样,级联式的分频器就被思考出来了。
假设需要100分频,通过2/3分频级联式的,如此分解:
100=2*50+3*0
50=2*25+3*0
25=2*12+3*1
12=2*6+3*0
6

4/5分频能实现级联式的分频器吗?

4/5分频组合能表示4*5-4-5=11,从12开始设计,如下:
12=4*3
13=4*2+5
14=4*1+5*2
15=4*0+5*3
16=4*4
17=4*3+5*1
通过这些例子,可以发现,4/5分频的话,P counter和S counter的数量会指数级增长。

后续

后续会将MMD的电路设计思路还原,为什么电路会那样实现,为什么2/3分频需要有modin和P信号,欢迎关注后续内容。eetop的markdown格式有一些问题,排版不好看。

参考文献

JSSC-2000.A Family of Low-Power Truly Modular Programmable Dividers in Standard 0.35-m CMOS Technology


1

点赞

刚表态过的朋友 (1 人)

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 1

    周排名
  • 7

    月排名
  • 0

    总排名
  • 1

    关注
  • 1

    粉丝
  • 1

    好友
  • 1

    获赞
  • 0

    评论
  • 7

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-7 14:13 , Processed in 0.028802 second(s), 16 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部