这里参考了两个博客,内容大体相同。
https://blog.csdn.net/u014183456/article/details/76695465
https://www.cnblogs.com/Fun-with-FPGA/p/4700631.html
但是要说一点,这两个博客在介绍奇数分频时,都说了一段话:
“对于实现占空比为50%的N倍奇数分频,首先进行上升沿触发进行模N计数,计数选定到某一个值进行输出时钟翻转,然后经过(N-1)/2再次进行翻转得到一个占空比非50%奇数n分频时钟。再者同时进行下降沿触发的模N计数,到和上升沿触发输出时钟翻转选定值相同值时,进行输出时钟时钟翻转,同样经过(N-1)/2时,输出时钟再次翻转生成占空比非50%的奇数n分频时钟。”
我不知道作者为什么要在这里卖一关子,正如大多数的国内教材一样,喜欢说深奥的话,说让人迷惑的话,其实是完全可以用很浅显的语言讲清楚的一件事。我初次看到这段话的时候,我在想这个“某一个值”是设定为多少合适?是一个范围还是说固定的一个数?既然你上面已经点明了模N计数,而且再“经过(N-1)/2”,那么你这个 ’某一个值’应该 只能是N-(N-1)/2=(N+1)/2.
我不知道这么理解对不对,但是根据上面博客的介绍和笔者的实验,的确只能是(N+1)/2。
下面是一个N=5 分频的例子,下图1 是假如选定“某一数值”为1 ,再反转的数值为(5-1)/2=2;显然没有实现5分频
图1
下图2是“某一数值”为4的时候的时序图,可以看出仍然分频失败:
图2
上面两个图都违背了作者模N的计数法则,下图3“某一数值”为3;因为3+2=5,那么这个分频是正确的,可以看出这个某一数值只能为3,不能“某”这个混淆视听的字眼来形容这个数值。不过我也感受到了国内网上博客大多以讹传讹的陋习
图3